flask mysql 事务_flask笔记:flask与数据库的交互

本文探讨了不推荐使用Flask-SQLAlchemy的理由,强调了原生SQL在运维问题解决和效率上的优势,并给出了使用Python SQLAlchemy的两种常见操作方式示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

官方推荐使用flask-sqlalchemy,但是这里我个人并不推荐。因为一般后台程序员其实更喜欢使用原生sql语言处理数据库的问题,更重要的一个原因是在项目上线后,处理一些运维问题时,如果可以查看sql语句可以更快找到问题。其次flask-sqlalchemy是在sqlalchemy基础上封装了一层,从编译的角度看效率上肯定会低一些(效率的影响也许微乎其微)。

基于以上原因,我推荐使用sqlalchemy进行开发。

下面的两种方式不仅限于flask,其实就是python对数据库操作的具体实现。

第一种方式(针对查询):

from sqlalchemy import create_engine,text

#定义数据库属性

hostname = '127.0.0.1'

port = '3306'

database = 'dbname'

username = 'root'

pwd = 'pwd'

dburl = 'mysql+mysqldb://{}:{}@{}:{}/{}'.format(username,pwd,hostname,port,database)

#创建数据库连接对象

engine = create_engine(dburl,echo=True)

with engine.connect() as con:

rs = con.execute('SELECT 1') # con.execute(text("select 1 "))

for row in rs:

print row

第二种方式(针对增删改,有事务):

from sqlalchemy import create_engine,text

from sqlalchemy.orm import sessionmaker

#定义数据库属性

hostname = '127.0.0.1'

port = '3306'

database = 'dbname'

username = 'root'

pwd = 'pwd'

dburl = 'mysql+mysqldb://{}:{}@{}:{}/{}'.format(username,pwd,hostname,port,database)

#创建数据库连接对象

engine = create_engine(dburl,echo=True)

Session = sessionmaker(bind=engine)

session = Session()

session.execute("insert test values ('abc','123')")

session.commit()

session.close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值