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()

 

posted @ 2020-05-10 15:20  不会飞的鲨鱼  阅读(222)  评论(0编辑  收藏  举报