python 数据库连接 CRUD

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

原文地址:https://www.cnblogs.com/412013cl/p/8544137.html