zoukankan      html  css  js  c++  java
  • 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()
  • 相关阅读:
    [EffectiveC++]item22:Declare data members private
    垃圾人定律
    [EffectiveC++]item17:以独立语句将newed对象置入智能指针
    [EffectiveC++]item15:Provide access to raw resources in resource-managing class
    C++ 中operator用法:隐式类型转换
    [EffectiveC++]item13:Use objects to manage resources(RAII)
    为什么拷贝构造函数的参数必须是引用?
    SPF邮件服务器
    raspberry
    bash
  • 原文地址:https://www.cnblogs.com/shuai06/p/12397528.html
Copyright © 2011-2022 走看看