ORM框架SQLAlchemy的操作
1.首先建立一个空py文件(这里命名为connect.py):
from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker # 配置信息 HOSTNAME = '127.0.0.1' PORT = '3306' DATABASE = 't_test' USERNAME = 'root' PASSWORD = 'qwe123' # 然后设置一个字符串的格式: db_url='mysql+pymysql://{}:{}@{}/{}?charset=utf8'.format( USERNAME, PASSWORD, HOSTNAME, DATABASE ) # 创建一个引擎: engine = create_engine(db_url) # 将引擎作为参数导入declarative_base()方法,返回一个类: Base = declarative_base(engine) # 同时需要创建一个会话窗,即映射: Session = sessionmaker(engine) session = Session() # 验证是否成功可以在尾端进行如下操作: if __name__=='__main__': print(dir(Base)) print(dir(session))
2.新建一个py文件(这里命名为modules.py),用来创建一个user表单。
首先从SQLAlchemy导入创建数据库记录的格式,同时将上个connect.py文件里创建的Base和session导入进来,下面也需要用到datetime的模块,将其也导入进来:
from connect import Base
from datetime import datetime
from sqlalchemy import Column, Integer, String, DateTime, Boolean # 然后定义一个Student类,继承Base: class Student(Base): # 提交到数据库 __tablename__ = 'student' # 表格名字 id = Column(Integer, primary_key=True, autoincrement=True) username = Column(String(20), nullable=False, unique=True) password = Column(String(50)) sex = Column(Boolean, default=False, nullable=False) creatime = Column(DateTime, default=datetime.now) def __repr__(self): return '<Student:username=%s,password=%s>' % (self.username,self.password) # 最后再执行创建: if __name__=='__main__': Base.metadata.create_all()
可以登录数据库查看一下user表是否被创建出来。
3.最后再创建一个py文件(这里命名为test.py),用来测试“增删改查”
from modules import Student from connect import session #增 def add_user(): # 添加一条数据 # person = Student(username='小明',password='123456') # session.add(person) # 添加多条数据 session.add_all([Student(username='小花',password='888'),Student(username='小黄',password='888')]) session.commit() #删 def delete_user(): # 删除一条数据 row = session.query(Student).filter_by(username='小花')[0] print(row) session.delete(row) # 删除多条数据 # session.query(Student).filter_by(password=888).delete() # 清空 # session.query(Student).delete() session.commit() #改 def update_user(): # session.query(Student).filter_by(id=3).update({Student.username: '小黄'}) # 修改一条数据 session.query(Student).filter_by(id=1,password=888).update({Student.password: 666}) # 修改多条数据 session.commit() #查 def query_user(): row = session.query(Student).all() # 查询所有 # row = session.query(Student).get(1) # 使用get查询,只能通过id查询 # row = session.query(Student).filter(Student.id == 1).first() # 查询id=1的 # row = session.query(Student).filter_by(id=1).first() # 查询id=1的 print(row) # 最后可以进行验证: if __name__=='__main__': # 验证 # add_user() # delete_user() # update_user() query_user()