python基础 -- sqlalchemy

2018-01-27  本文已影响0人  fada492daf5b

1. 作用

ORM(Object-Relational Mapping) 对象关系映射

2. 操作

安装mysqlclient和sqlalchemy

sudo pip3 install mysqlclient sqlalchemy

操作数据库

# sqlalchemy
# orm对象关系映射
from sqlalchemy import Column, String, create_engine, ForeignKey
from sqlalchemy.orm import sessionmaker, relationship
from sqlalchemy.ext.declarative import declarative_base

# 创建对象的基类
Base = declarative_base()

# 一个object对应一个table
class Teacher(Base):
    __tablename__ = 'teacher' # 表名

    # 表列
    id = Column(String(20), primary_key=True)
    name = Column(String(20))
    students = relationship('Student')

class Student(Base):
    __tablename__ = 'student'

    # 表列
    id = Column(String(20), primary_key=True)
    name = Column(String(20))
    teacher_id = Column(String(20), ForeignKey('teacher.id'))

# 初始化
# '数据库类型+数据库驱动名称://用户名:密码@主机地址:端口号/数据库名'
engine = create_engine('mysql+mysqldb://mgt:1234567@localhost:3306/test')
# 绑定数据库,创建对话系统
DBSession = sessionmaker(bind=engine)

# 创建表
Base.metadata.create_all(engine)

# 创建一个对话
session = DBSession()
# 创建新的User对象
teach_one = Teacher(id='5', name='Bob')
teach_two = Teacher(id='2', name='Candy')
stude_one = Student(id='1', name='Tommy', teacher_id='5')
stude_two = Student(id='2', name='Maria', teacher_id='5')
stude_thr = Student(id='3', name='Andy', teacher_id='2')
stude_for = Student(id='4', name='Laura', teacher_id='2')
# 添加session
session.add(teach_one)
session.commit()
session.add(teach_two)
session.add(stude_one)
session.add(stude_two)
session.add(stude_thr)
session.add(stude_for)
# 提交即保存到数据库
session.commit()
# 查询数据
user = session.query(Teacher).filter(Teacher.id=='5').one()
print(user)
# 关闭session
session.close()
上一篇下一篇

猜你喜欢

热点阅读