Sqlalchemy使用连接Mysql/Pgsql,并用Orm和原生Sql增删改查
注意创建表的时候,Pgsql不要创建User表,因为User表是Pgsql的关键字,会出错。
Flask-SQLAlchemy
Flask-SQLAlchemy库让flask更方便的使用SQLALchemy,是一个强大的关系形数据库框架,既可以使用orm方式操作数据库,也可以使用原始的SQL命令.
需要安装的包
MySQL
SQLAlchemy
Flask-SQLAlchemy
mysqlclient
配置Flask-SQLAlchemy
示例:
MySQL: mysql://username:password@hostname/database
PgSql:postgresql://用户名:密码@localhost:8891/pgdbname
数据库创建和配置:
-
create table Users
-
(
-
id serial primary key,
-
nick_name varchar(255)
-
);
随便增加一条数据就可以了。
-
from sqlalchemy import Column, Integer, MetaData, VARCHAR
-
from flask_sqlalchemy import SQLAlchemy
-
from flask import Flask
-
-
app = Flask(__name__)
-
-
#配置数据库地址Mysql:
-
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:wjjf2008@127.0.0.1:3306/internet_plus?charset=utf8'
-
-
#Pgsql配置: SQLALCHEMY_DATABASE_URI = "postgresql://postgres:postgres@localhost:8891/pgdbname"
-
#该配置为True,则每次请求结束都会自动commit数据库的变动
-
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
-
-
db = SQLAlchemy(app)
-
#也可以db = SQLAlchemy() db.init_app(app)
-
-
-
-
class User(db.Model):
-
"""用户"""
-
__tablename__ = "User"
-
id = db.Column(db.Integer, primary_key=True) # 用户编号
-
nick_name = db.Column(db.String(32), unique=True, nullable=False) # 用户昵称
-
-
def __repr__(self):
-
"""
-
格式化输出
-
"""
-
return '<User %r>' % self.nick_name
-
-
def to_json(self):
-
"""
-
为了转json提供的方法
-
"""
-
dict = self.__dict__
-
if "_sa_instance_state" in dict:
-
del dict["_sa_instance_state"]
-
return dict
-
-
-
def add_user():
-
# 添加测试数据库
-
u = User()
-
u.nick_name = "wang"
-
# 将用户添加到数据库会话中
-
db.session.add(u)
-
# 将数据库会话中的变动提交到数据库中,如果不Commit,数据库中是没有改动的
-
db.session.commit()
-
return "添加成功"
-
-
-
-
def query_user():
-
# 返回所有用户保存到list中
-
user_list = User.query.all()
-
print(user_list)
-
# 转成Json返回
-
result = [u.to_json() for u in user_list]
-
return jsonify(result), 200
-
-
-
-
def exec_sql():
-
# 执行原生SQL
-
res = db.session.execute('select * from "User";').fetchall()
-
emp_json_list = [dict(zip(item.keys(), item)) for item in res]
-
print(emp_json_list)
-
return jsonify(emp_json_list), 200
-
-
-
if __name__ == '__main__':
-
# db.create_all() #创建数据库
-
app.run(host="0.0.0.0", port=5000)
直接访问:
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgbheib
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01