python使用orm映射数据库架构

用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 —> 工具 —> 选项,去掉下面的勾选

python使用orm映射数据库架构

设计表,修改标识规范为是

python使用orm映射数据库架构

还可以通过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)