标签:lse 安装 报错 cycle metadata nullable creat style null
安装:
pip3 install sqlalchemy
用SQLAlchemy创建表:
#导入这些模块 from sqlalchemy.orm import sessionmaker from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column,Integer,String,create_engine Base = declarative_base() #定义这个类,和下面的表名不是一个属性 class User(Base): __tablename__ = ‘users‘ id = Column(Integer,primary_key=True) name=Column(String(32),index=True,nullable=False) engine = create_engine( "mysql+pymysql://root:123456@127.0.0.1:3306/liuyandb?charset=utf8", max_overflow=0, # 超过连接池大小外最多创建的连接 pool_size=5, # 连接池大小 pool_timeout=30, # 池中没有线程最多等待的时间,否则报错 pool_recycle=-1 # 多久之后对线程池中的线程进行一次连接的回收(重置) ) if __name__ =="__main__": Base.metadata.create_all(engine)
一、新增
#创建连接 from sqlalchemy.orm import sessionmaker from sqlalchemy import create_engine from models import Users engine = create_engine( "mysql+pymysql://root:123456@127.0.0.1:3306/s9day120?charset=utf8", max_overflow=0, # 超过连接池大小外最多创建的连接 pool_size=5, # 连接池大小 pool_timeout=30, # 池中没有线程最多等待的时间,否则报错 pool_recycle=-1 # 多久之后对线程池中的线程进行一次连接的回收(重置) ) SessionFactory = sessionmaker(bind=engine) # 根据Users类对users表进行增删改查 session = SessionFactory()
1、单个数据新增
obj=User1(name="小叮当") #单个数据创建,创建个对象提交就行了 session.add(obj) session.commit()
2、多个对象新增
session.add_all([ User1(name="大头儿子"), User1(name="小头爸爸"), ]) session.commit()
二、查询
1、全部查询
result=session.query(User1).all() for i in result: print(i.name)
2、筛选
result=session.query(User1).filter(User1.id>1)
for i in result:
print(i.id,i.name)
3、取对象
result=session.query(User1).filter(User1.id>1).first()
print(result.name)
三、删除
session.query(User1).filter(User1.id ==6).delete()
session.commit()
四、改
session.query(User1).filter(User1.id==8).update({User1.name:"二师兄"}) session.commit()
在对字符串进行拼接的时候,会被默认为数字,操作不会执行,所以要指定是字符串拼接:synchronize_session=False
session.query(User1).filter(User1.id==8).update({User1.name:"二师兄"+"过河"},synchronize_session=False) session.commit()
五、关闭数据库
def drop_all(): engine = create_engine( "mysql+pymysql://root:123456@127.0.0.1:3306/s9day120?charset=utf8", max_overflow=0, # 超过连接池大小外最多创建的连接 pool_size=5, # 连接池大小 pool_timeout=30, # 池中没有线程最多等待的时间,否则报错 pool_recycle=-1 # 多久之后对线程池中的线程进行一次连接的回收(重置) ) Base.metadata.drop_all(engine)
标签:lse 安装 报错 cycle metadata nullable creat style null
原文地址:https://www.cnblogs.com/wyx666/p/9204662.html