用sqlalchemy连接sqlserver,操作数据库
1 # conding:utf-8 2 from sqlalchemy import create_engine 3 from sqlalchemy.ext.declarative import declarative_base 4 from sqlalchemy import Column, Integer, String, DateTime # 区分大小写 5 from sqlalchemy.orm import sessionmaker 6 7 # 生成orm基类 8 base = declarative_base() 9 10 11 class Status(base): 12 __tablename__ = 'Status' # 表名 13 __table_args__ = { 14 'schema': 'Code' #数据库架构名 15 } 16 StatusId = Column(Integer, primary_key=True) 17 StatusName = Column(String(20)) 18 UpdateTime = Column(DateTime) 19 20 21 # 创建连接 22 engine = create_engine("mssql+pymssql://sa:password@10.138.60.189/DBname?charset=utf8", echo=False) 23 # base.metadata.create_all(engine) # 创建表结构,已存在表则无需执行 24 Session_class = sessionmaker(bind=engine) ##创建与数据库的会话,class,不是实例 25 Session = Session_class() # 生成session实例 26 27 status_obj = Status(StatusName='新增', UpdateTime='2014-07-15 10:25:03') #插入你要创建的数据对象,每执行一次都会新增一次数据。 28 print(status_obj.StatusId, status_obj.StatusName, status_obj.UpdateTime) #此时还没创建对象呢,不信你打印一下id发现还是None 29 Session.add(status_obj) #把要创建的数据对象添加到这个session里 30 print(status_obj.StatusId, status_obj.StatusName, status_obj.UpdateTime) #此时也依然还没创建 31 Session.commit() #提交,使前面修改的数据生效。 32 print(status_obj.StatusId, status_obj.StatusName, status_obj.UpdateTime) 33 34 status_obj = Session.query(Status).all() #查询所有记录 35 for row in status_obj: #打印全部内容 36 print(row.StatusId, row.StatusName, row.UpdateTime)
如果无法插入报id没有标识,那么可以在数据加上标识
SQL SERVER Management Studio —> 工具 —> 选项,去掉下面的勾选
设计表,修改标识规范为是
还可以通过excute方式
1 from sqlalchemy import create_engine, Table, MetaData 2 from sqlalchemy.orm import Session 3 metadata = MetaData() 4 engine = create_engine( 5 'mssql+pymssql://sa:password@10.138.60.189:1433/DBname?charset=utf8', 6 echo=False) 7 8 Status = Table('Status', metadata, autoload=True, autoload_with=engine, schema='Code') 9 session = Session(engine) 10 11 aa = Status.insert().values(StatusId=9, StatusName='新增', UpdateTime='2014-07-15 10:25:03.327') 12 session.execute(aa) 13 session.commit() 14 ''' 15 反射数据库所有的表 16 Base = automap_base() 17 Base.prepare(engine, reflect=True) 18 Admin = Base.classes.admin 19 ''' 20 21 res = session.query(Status).all() 22 print(res)