【python学习笔记】python使用sqlalchemy连接mysql数据库

python使用sqlalchemy连接mysql数据库

sqlalchemy是python当中比较出名的orm程序。

什么是orm?

orm英文全称object relational mapping,就是对象映射关系程序,简单来说我们类似python这种面向对象的程序来说一切皆对象,但是我们使用的数据库却都是关系型的,为了保证一致的使用习惯,通过orm将编程语言的对象模型和数据库的关系模型建立映射关系,这样我们在使用编程语言对数据库进行操作的时候可以直接使用编程语言的对象模型进行操作就可以了,而不用直接使用sql语言。

什么是sqlalchemy?

sqlalchemy是python的orm程序,在整个python界当中相当出名。

安装sqlalchemy
$ pip install sqlalchemy
导入必要的库文件
#!/usr/bin/python
# -*- coding: utf-8 -*-


from sqlalchemy import Column, String, create_engine, ForeignKey
from sqlalchemy.orm import sessionmaker, relationship
from sqlalchemy import Column
from sqlalchemy.types import CHAR, Integer, String
from sqlalchemy.ext.declarative import declarative_base
创建对象的基类
# 创建对象的基类:
Base = declarative_base()
定义各个表的类
# 定义User对象:
class User(Base):
    # 表的名字:
    __tablename__ = 'user'


    # 表的结构:
    id = Column(Integer, primary_key=True)
    name = Column(String(20))
    psw = Column(String(20))
    books = relationship('Book')


    def __init__(self, id, name,psw):
        self.id = id
        self.name = name
        self.psw = psw


    def __repr__(self):
        return '<User %r>' % self.name


class Book(Base):
    __tablename__ = 'book'


    id = Column(Integer, primary_key=True)
    book_name = Column(String(20))
    # “多”的一方的book表是通过外键关联到user表的:
    user_id = Column(String(20), ForeignKey('user.id'))


    def __init__(self, id, book_name, user_id):
        self.id = id
        self.book_name = book_name
        self.user_id = user_id




    def __repr__(self):
        return '<User %r>' % self.name
初始化数据库连接
# 初始化数据库连接:
engine = create_engine('mysql+mysqlconnector://root:root@localhost:3306/user')
# 创建DBSession类型:
DBSession = sessionmaker(bind=engine)
创建session,应用
session = DBSession()
# 创建Query查询,filter是where条件,最后调用one()返回唯一行,如果调用all()则返回所有行:
# user = session.query(User).outerjoin(Book).filter(Book.user_id == '2').one()#连表查询  定义好主键
user = session.query(User).join(Book, Book.user_id == User.id).filter(Book.user_id == '2').one()#连表查询  自己指定连接
book = session.query(Book).join(User, Book.user_id == User.id).filter(Book.user_id == '2').one()#连表查询  自己指定连接
print user.name
print book.book_name																								# 关闭Session:
session.close()








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

leason00

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值