用sqlalchemy连接sqlserver,操作数据库
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
# conding:utf-8
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, DateTime # 区分大小写
from sqlalchemy.orm import sessionmaker
# 生成orm基类
base = declarative_base()
class Status(base):
__tablename__ = 'Status' # 表名
__table_args__ = {
'schema': 'Code' #数据库架构名
}
StatusId = Column(Integer, primary_key=True)
StatusName = Column(String(20))
UpdateTime = Column(DateTime)
# 创建连接
engine = create_engine("mssql+pymssql://sa:password@10.138.60.189/DBname?charset=utf8", echo=False)
# base.metadata.create_all(engine) # 创建表结构,已存在表则无需执行
Session_class = sessionmaker(bind=engine) ##创建与数据库的会话,class,不是实例
Session = Session_class() # 生成session实例
status_obj = Status(StatusName='新增', UpdateTime='2014-07-15 10:25:03') #插入你要创建的数据对象,每执行一次都会新增一次数据。
print(status_obj.StatusId, status_obj.StatusName, status_obj.UpdateTime) #此时还没创建对象呢,不信你打印一下id发现还是None
Session.add(status_obj) #把要创建的数据对象添加到这个session里
print(status_obj.StatusId, status_obj.StatusName, status_obj.UpdateTime) #此时也依然还没创建
Session.commit() #提交,使前面修改的数据生效。
print(status_obj.StatusId, status_obj.StatusName, status_obj.UpdateTime)
status_obj = Session.query(Status).all() #查询所有记录
for row in status_obj: #打印全部内容
print(row.StatusId, row.StatusName, row.UpdateTime)
如果无法插入报id没有标识,那么可以在数据加上标识
SQL SERVER Management Studio —> 工具 —> 选项,去掉下面的勾选
设计表,修改标识规范为是
还可以通过excute方式
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
from sqlalchemy import create_engine, Table, MetaData
from sqlalchemy.orm import Session
metadata = MetaData()
engine = create_engine(
'mssql+pymssql://sa:password@10.138.60.189:1433/DBname?charset=utf8',
echo=False)
Status = Table('Status', metadata, autoload=True, autoload_with=engine, schema='Code')
session = Session(engine)
aa = Status.insert().values(StatusId=9, StatusName='新增', UpdateTime='2014-07-15 10:25:03.327')
session.execute(aa)
session.commit()
'''
反射数据库所有的表
Base = automap_base()
Base.prepare(engine, reflect=True)
Admin = Base.classes.admin
'''
res = session.query(Status).all()
print(res)