• Tornado之ORM(sqlalchemy)


    自己看代码,先不多做解释了这篇

    /connect.py

    
    #### ORM  对象关系映射  (只是一个概念)
    ### Python里面使用非常广的orm : SQLAlchemy 连接数据库
    
    #导入模块
    from sqlalchemy import create_engine
    
    #数据库数据
    HOSTNAME = '127.0.0.1'
    PORT = '3306'
    DATABASE = 'mydb'
    USERNAME = 'xps'
    PASSWORD = 'qwe123'
    
    ##连接数据连接 URL
    Db_url = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(
        USERNAME,
        PASSWORD,
        HOSTNAME,
        PORT,
        DATABASE,
    
    )
    ## 连接数据库
    engine = create_engine(Db_url)
    
    ##创建Moudle
    
    ## 表
    from sqlalchemy.ext.declarative import declarative_base
    Base = declarative_base(engine)  ####基类
    
    
    ##增删改查
    #创建会话
    from sqlalchemy.orm import sessionmaker
    Session = sessionmaker(engine)
    session = Session()  #实例
    
    
    
    ##测试
    if __name__ == "__main__":
        conection = engine.connect()
        result = conection.execute('select 1')
        print(result.fetchone())

    /* user_modules.py*

    
    from datetime import datetime
    from sqlalchemy import Column, Integer, String, DateTime,Boolean
    from connect import Base
    
    #####我们用类来表示数据库里面的表!!!
    class User(Base):
        __tablename__ = 'user'  ##表名字
        id = Column(Integer, primary_key=True,autoincrement=True)
        username = Column(String(20))
        password = Column(String(50))
        creatime = Column(DateTime, default=datetime.now)
        _locked = Column(Boolean,default=False,nullable=False)
    
        def __repr__(self):    ##
            return """<User(id=%s,username=%s,password=%s,creatime=%s,_locked=%s)>
    
            """%(
                self.id,
                self.username,
                self.password,
                self.creatime,
                self._locked
            )
    
    
    ##创建表
    if __name__ =="__main__":
        Base.metadata.create_all()    ##去数据库里面创建所有的表

    /*test.py*

    from connect import session
    from User_moudules import User
    
    ##增
    def add_user():
        #person = User(username = 'xps',password='123')
        #session.add(person)  #增加一条数据
        session.add_all([    #增加多条数据
            User(username = 'xpss',password='123'),
            User(username = 'xpss',password='123'),
            User(username = 'xpsss',password='123'),
        ])
        session.commit() #提交
    
    
    
    ##查
    def search__user():
        rows = session.query(User).all()  ###查询所有
        #rows = session.query(User).first()  ###查询一条
        print(rows) ##打印出的是内存地址,  重写__repr__之后就可以直接读了
    
    ##改
    def update_user():
        rows = session.query(User).filter(User.username == 'xpss').update({User.password:1}) ##字典
        session.commit()
    
    ##删除
    def delete_user():
        rows = session.query(User).filter(User.username =='xpss')[0]
        print(rows)
        session.delete(rows)   #删除第一条记录
        #rows.deleted()   #批量删除
        session.commit()
    
    def chaxun():
        row = session.query(User).filter(User.username == 'xpss')
        for i in row:
            print(i)
    
    
    
    if __name__ =="__main__":
        add_user()
        search__user()
        update_user()
        delete_user()
        #chaxun()
  • 相关阅读:
    C++继承与派生的概念、什么是继承和派生
    为什么要用重载(学习笔记)
    C++ 为什么要用覆盖(学习笔记)
    做一个爱分享的人技术牛人博客
    okhttp head()请求
    android 8.0 前台服务问题
    android 配置 kotlin 使用jdk1.8编译
    java 获取apk包的版本号、包路径。权限信息
    vue 自定义input控件 v-model 绑定数据问题
    android ViewModel 列表数据获取条数
  • 原文地址:https://www.cnblogs.com/shuai06/p/12397528.html
Copyright © 2020-2023  润新知