zoukankan      html  css  js  c++  java
  • Python连接SQL Server之create_engine和pyodbcpymssql:Flask的SQLAlchemy中query中filter和filter_by的区别

    SQLAlchemy中的query,有filter和filter_by两个函数

    filter_by表内部精确查询

    https://www.cnblogs.com/Jokerguigui/p/11526889.html 

    https://blog.csdn.net/weixin_42670402/article/details/84522877

    >>使用SQLAlchemy:https://www.liaoxuefeng.com/wiki/1016959663602400/1017803857459008

    快速入门Flask-SQLAlchemy:http://www.pythondoc.com/flask-sqlalchemy/quickstart.html

    SQLAlchemy登录用户模块

    from flask_sqlalchemy import SQLAlchemy
    db = SQLAlchemy()
    app = Flask(__name__)
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'

    win10下使用flask_sqlalchemy连接SQLServer:https://blog.csdn.net/qq_33279781/article/details/78539531

    SQLAlchemy连接SQLserver数据库及常用的DB操作:https://blog.csdn.net/young_kp/article/details/82423596

    Dealing with disconnect:https://docs.sqlalchemy.org/en/14/core/pooling.html#pool-disconnects

    create_engine

    from flask import Flask
    from flask_sqlalchemy import SQLAlchemy
    from sqlalchemy import create_engine
    from sqlalchemy.orm import sessionmaker
    
    
    #Person.py
    from sqlalchemy import Column,String,INT
    from sqlalchemy.ext.declarative import declarative_base
    Base = declarative_base()   #创建对象的基类
    
    
    class User(Base):
        __tablename__ = 'users'
        #id = Column(INT())#, primary_key=True
        name = Column(String(80),nullable=True, primary_key=True)
        email = Column(String(120),nullable=True)
    
        def __init__(self, name, email):
            #self.id = id
            self.name = name
            self.email = email
    
    
    class DatabaseManagement():
        def __init__(self):
            self.engine = create_engine('mssql+pymssql://sa:密码@localhost:1433/sss',echo=True)#初始化数据库连接
            DBsession = sessionmaker(bind=self.engine) #创建DBsession
            self.session = DBsession() #创建对象
    
        def add_obj(self, obj): #添加内容
            self.session.add(obj)
            self.session.commit() #提交
            return obj
    
        def query_all(self, target_class, query_filter): #查询内容
            result_list = self.session.query(target_class).filter(query_filter).all()
            return result_list
    
        def update_by_filter(self, obj, update_hash, query_filter): #更新内容
            self.session.query(obj.__class__).filter(query_filter).update(update_hash)
            self.session.commit()
    
        def delete_by_filter(self, obj, query_filter): #删除内容
            self.session.query(obj).filter(query_filter).delete()
    
        def close(self): #关闭session
            self.session.close()
    
        def execute_sql(self, sql_str): #执行sql语句
            return self.session.execute(sql_str)
    
    class MyTest():
        def __init__(self):
            self.db_obj = DatabaseManagement()
    
        def process(self):
            person_obj = User("Wilson4", "111@sina.com")
            self.db_obj.add_obj(person_obj)
            # query_filter = 'users.name == "Wilson", users.email == "111@sina.com"'
            # person_list = self.db_obj.query_all(Person, query_filter)
            # for i in person_list:
            #     print (i.name)
            print ("hello")
    
    
    
    if __name__=="__main__":
        myTest = MyTest()
        myTest.process()

    第二种方法:不使用create_engine。。。Python连接SQL Server 之pyodbcpymssql。。。https://blog.csdn.net/qq_41070101/article/details/85081378

    from flask import Flask
    from flask_sqlalchemy import SQLAlchemy
    from sqlalchemy import create_engine
    from sqlalchemy.orm import sessionmaker
    
    
    
    app = Flask(__name__)
    app.config['SQLALCHEMY_DATABASE_URI'] = 'mssql+pymssql://sa:密码@localhost:1433/sss'#sqlite:////tmp/test.db
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
    db = SQLAlchemy(app)
    
    
    
    class User(db.Model):
        __tablename__ = 'users'
        #id = db.Column(db.Integer, primary_key=True)
        name = db.Column(db.String(80), nullable=True, primary_key=True)
        email = db.Column(db.String(120), nullable=True)
    
        def __init__(self, name, email):
            self.name = name
            self.email = email
    
        def __repr__(self):
            return '<User %r>' % self.name
    
    if __name__ == '__main__':
      print('zhangsan')
      user = User.query.filter_by(name='Wilson').first()
      print(user)
  • 相关阅读:
    NOIP 模拟 序列操作
    LUOGU 1525 关押罪犯
    HDU2473 Junk-Mail Filter
    BZOJ 2096 Pilots
    luogu 3939 数颜色
    NOIP模拟 赌博游戏
    Unity3D
    HTML5
    Cocos2d-x——支持多触点
    Cocos2d-x——Cocos2d-x 屏幕适配总结
  • 原文地址:https://www.cnblogs.com/2008nmj/p/15047692.html
Copyright © 2011-2022 走看看