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