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

posted @   qukaige  阅读(180)  评论(0编辑  收藏  举报
编辑推荐:
· .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 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示