python使用orm映射数据库架构

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值