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()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值