python动态生成数据库表 orm_python+ sqlalchemy实现orm创建表和查询操作

from sqlalchemy import create_engine

from sqlalchemy.ext.declarative import declarative_base

from sqlalchemy import Column,Integer,String #区分大小写

from sqlalchemy.orm import sessionmaker

这里使用的是mysqlconnector 而没用使用pymysql,因为在是使用pymysql出现了错误报错

转至https://www.cnblogs.com/shiqi17/p/9409228.html

engine=create_engine("mysql+mysqlconnector://root:root@localhost/quey",encoding=‘utf-8‘,echo=True)

生成orm基类

base=declarative_base()

class user(base):

tablename = ‘users‘ #表名

id = Column(Integer, primary_key=True)

name = Column(String(32))

password = Column(String(64))

class class_name(base):

tablename = ‘class‘ # 表名

id = Column(Integer, primary_key=True)

name = Column(String(32))

password = Column(String(64))

password1 = Column(String(64))

base.metadata.create_all(engine) #创建表结构

Session_class=sessionmaker(bind=engine) ##创建与数据库的会话,class,不是实例

#生成session实例

Session = Session_class()

for i in range(0,10):

user_obj = user(name="{}".format(i),password="123456") #插入你要创建的数据对象,每执行一次都会新增一次数据。

# print(user_obj.name,user_obj.id,‘1111‘) #此时还没创建对象呢,不信你打印一下id发现还是None

Session.add(user_obj)#把要创建的数据对象添加到这个session里

# print(user_obj.name,user_obj.id,‘2222‘) #此时也依然还没创建

Session.commit() #提交,使前面修改的数据生效

只查询第一条记录

result = Session.query(user).first()

print(type(result.id),type(result.name),type(result.password))

print("第一条查询结果:" + str(result.id),result.name,result.password)

通过ID字段查询

result = Session.query(user).filter_by(id=2).first()

print("ID值查询结果:" + str(result.id),result.name,result.password)

分页查询 0,2

result = Session.query(user).filter(user.id>1).limit(5).offset(10).all()

for i in result:

print(i.id,i.name,i.password)

根据主键查询

result = Session.query(user).get(3)

print(result.name)

新增和修改

新增

news = user(name="我是",password="新增测试标题")

Session.add(news)

Session.commit()

修改

Session.query(user).filter(user.id==7).update({"password":"修改之后的标题"})

Session.commit()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值