zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    SecureCRT:保存输出日志的方法
    中文数字转阿拉伯数字
    XP 安装Oralce 10g 数据库
    SQL语句处理一些修改、新增、删除、修改属性操作(MySql)
    SpringBoot整合Shiro完成认证
    SpringBoot 集成Shiro之使用Redis缓存授权认证信息
    解决Establishing SSL connection without server‘s identity verification is not recommended.
    操作系统的内存笔记
    Shiro的认证与授权
    详解 TCP的三次握手四次挥手
  • 原文地址:https://www.cnblogs.com/412013cl/p/8544137.html
Copyright © 2011-2022 走看看