Flask下 ORM代理操作Mysql以及CRUD的自我汇总

ORM代理模式的连接方式

需要导入的包以及相关配置

from flask_sqlalchemy import SQLAlchemy
from flask import Flask

app.config['SQLALCHEMY_DATABASE_URI'] = "mysql+pymysql://root:123456@localhost/first_flask" #配置mysql的连接路径(用户名,密码,使用的数据库名等)
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False #如果设置成 True (默认情况),Flask-SQLAlchemy 将会追踪对象的修改并且发送信号。这需要额外的内存, 如果不必要的可以禁用它。
app.config['SQLALCHEMY_COMMIT_TEARDOWN'] = True ##配置flask配置对象中键:SQLALCHEMY_COMMIT_TEARDOWN,设置为True,应用会自动在每次请求结束后提交数据库中变动
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True #该配置为True,则每次请求结束都会自动commit数据库的变动

app = Flask(__name__)
db = SQLAlchemy(app) #获取SQLAlchemy实例对象,接下来就可以使用对象调用数据

Flask-SQLALchemy使用继承至db.Model的类来定义模型,如:

class Author(db.Model):
    __tablename__ = 'authors'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(16), unique=True)
    #     引用 books给自己用 ,author是给Book模型用
    books = relationship('Book', backref='author'
	
	 def __repr__(self):
        return 'Author: %s' % self.name

用db对象创建和清空表

db.drop_all() #清空表中数据
db.create_all()#创建表

增加记录

admin = User(username='admin', email='[email protected]')
guest = User(username='guest', email='[email protected]')
db.session.add(admin)
db.session.add(guest)
db.session.commit()

查询记录,注意查询返回对象,如果查询不到返回None

User.query.all() #查询所有
User.query.filter_by(username='admin').first()#条件查询
User.query.order_by(User.username).all()#排序查询
User.query.limit(1).all()#查询1条
User.query.get(id = 123)#精确查询

删除

user = User.query.get(id = 123)
db.session.delete(user)
db.session.commit()

修改

user = User.query.first()
user.name = 'dong'
db.session.commit()

CRUD的连接方式

需要导入的包以及相关配置

import pymysql

conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='123456', db='first_flask', charset='utf8') 
 #数据库的连接
 # print(conn) #查看是否连接成功  成功的话返回:pymysql.connections.Connection object at 0x000000B3A9AEAA90>

创建游标

cursor = conn.cursor()

设置输入输出的字符编码以及自动提交

cursor.execute('set names utf8')
cursor.execute('set autocommit = 1')
sql  = "insert into table_name (name, pwd) values('123','456')"  #增加
sql  = "insert into table_name (name, pwd) values('%s','%s')" %('123','456')  #增需要打引号的
sql = "delete from table_name where id={0}".format(2)   #定点删除
sql = "update table_name set pwd='123' where name = '456'"  #定点修改
sql = "select * from table_name where start_date between '%s' and '%s'" %(a1,a2) #查找

执行sql并得到结果

cursor.execute(sql)

获取的方式

result = cursor.fetchall()
#其中还有 全部 cursor.fetchall()    单个 cursor.fetchone()  多条 cursor.fetchmany(n)
print(result)

关闭游标和连接

cursor.close()
conn.close()

希望能方便到有flask数据库使用基础的人查询相关语句

你可能感兴趣的:(Flask下 ORM代理操作Mysql以及CRUD的自我汇总)