手机网站样例,在线制作图片生成器小程序,建设工程标准在线网站,网站建设费在会计上怎么入账SQLAlchemy 2.0相比1.x进行了很大的更新#xff0c;目前网上的教程不多#xff0c;以下以链接mysql为例介绍一下基本的使用方法
环境及依赖
Python:3.8
mysql:8.3
Flask:3.0.3
SQLAlchemy:2.0.37
PyMySQL:1.1.1使用步骤
1、创建引擎#xff0c;链接到mysql
engine crea…SQLAlchemy 2.0相比1.x进行了很大的更新目前网上的教程不多以下以链接mysql为例介绍一下基本的使用方法
环境及依赖
Python:3.8
mysql:8.3
Flask:3.0.3
SQLAlchemy:2.0.37
PyMySQL:1.1.1使用步骤
1、创建引擎链接到mysql
engine create_engine(mysqlpymysql://{username}:{password}{ip}:3306/{database_name}, echoTrue)以上的变量替换成自己的即可比如你需要连接本地的test_db数据库用户名为root密码为123456那么写法就是
engine create_engine(mysqlpymysql://root:123456127.0.0.1:3306/test_db, echoTrue)echo参数的作用是开启sql输出以便调试
2、打开数据库链接会话
session sessionmaker(engine)3、保证线程安全
db_session scoped_session(session)db_session对象在保证线程安全的同时也封装了常用的数据库操作方便使用
4、获取基类
Base declarative_base()5、创建数据库映射对象类
假设当前有一个数据库表名为user表结构如下
class User(Base):__table__ Table(user, Base.metadata, engine)autoload_with开启表结构的自动反射加载
测试
至此准备工作已经全完成下面使用flask框架写一个简单的登录接口来测试
import jsonfrom flask import Flask, request
from sqlalchemy import create_engine, Table
from sqlalchemy.orm import sessionmaker, scoped_session, declarative_baseapp Flask(__name__)# 创建一个引擎链接到mysql
engine create_engine(mysqlpymysql://root:123456127.0.0.1:3306/test_db, echoTrue)
# 打开数据库链接会话
session sessionmaker(engine)
# 保证线程安全
db_session scoped_session(session)
# 获取基类
Base declarative_base()class User(Base):__table__ Table(user, Base.metadata, autoload_withengine)app.route(/, methods[POST])
def login():# 取到json请求数据request_data json.loads(request.data)username request_data[username]password request_data[password]# 根据username、password查询数据库中是否有匹配对象result db_session.query(User).filter_by(usernameusername, passwordpassword).first()if result is None:return 登录失败return 登录成功if __name__ __main__:app.run()运行当前项目 * Serving Flask app main* Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.* Running on http://127.0.0.1:5000向接口发送请求
成功取到数据登录成功
2025-01-31 23:03:09,852 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2025-01-31 23:03:09,855 INFO sqlalchemy.engine.Engine SELECT user.user_id AS user_user_id, user.username AS user_username, user.password AS user_password, user.nickname AS user_nickname, user.picture AS user_picture, user.create_time AS user_create_time, user.update_time AS user_update_time, user.job AS user_job
FROM user
WHERE user.username %(username_1)s AND user.password %(password_1)s LIMIT %(param_1)s
2025-01-31 23:03:09,855 INFO sqlalchemy.engine.Engine [generated in 0.00022s] {username_1: 黎震南, password_1: 62927, param_1: 1}
127.0.0.1 - - [31/Jan/2025 23:03:09] POST / HTTP/1.1 200 -