python 数据库连接 CRUD
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | import sqlalchemy from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column,String,Integer from sqlalchemy.orm.session import sessionmaker from sqlalchemy import func engine = create_engine( 'mysql+pymysql://root:412013@localhost/testdb?charset=utf8' ,echo = False ) Base = declarative_base() # 生产orm基类 class User(Base): __tablename__ = 'user' # 表名 id = Column(Integer, primary_key = True ) name = Column(String( 32 )) # varchar(32) password = Column(String( 64 )) # varchar(64) def __init__( self ,name,password): self .name = name self .password = password def __repr__( self ): return '<@user:[name=%s,password=%s]> ' % ( self .name, self .password) Base.metadata.create_all(engine) # 不存在创建数据表 Session_class = sessionmaker(bind = engine) # 创建与数据库的会话session class ,注意,这里返回给session的是个class,不是实例 Session = Session_class() # 生产session实例 user_obj = User(name = 'kaige' ,password = '123456' ) # 生成你要创建的数据对象 print (user_obj.name, user_obj. id ) # 此时还没创建对象呢,打印一下id发现还是None # 插入数据 , 必须要commit Session.add(user_obj) # 把要创建的数据对象添加到这个session里, 一会统一创建 print (user_obj.name, user_obj. id ) # 此时也依然还没创建 # 提交数据 Session.commit() # Session.rollback() 回滚 # 查询 一条 # my_user = Session.query(User).filter_by(name='kaige').first() # 查询所有 # my_user = Session.query(User).filter(User.name=='kaige').all() # 修改 # my_user = Session.query(User).filter_by(name='kaige').first() # my_user.name = 'I love you22222222' # Session.commit() # 修改插入需要commit # 包含多个条件 # my_user = Session.query(User).filter(User.name.in_(['kaige', 'I love you'])).all() # 模糊查询 # my_user = Session.query(User).filter(User.name.like("I%")).all() # 统计 # my_user = Session.query(User).filter(User.name == 'kaige').count() # 分组 ''' SELECT count(user.name) AS count_1, user.name AS user_name FROM user GROUP BY user.name ''' # print(Session.query(func.count(User.name),User.name).group_by(User.name).all() ) # 输入结果 : [(1, 'I love you'), (2, 'I love you22222222'), (19, 'kaige')] # Session.query(User).filter(User.name.in_(['Jack','rain'])).all() print (my_user) |
http://www.cnblogs.com/alex3714/articles/5978329.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义