python - 如何“重置”在使用来自 Flask 应用程序的数据库的 Python 脚本中运行的 db.session?
问题描述
我有以下代码:
from flask_migrate import upgrade
app = create_app()
with app.app_context():
# Merge branch into master and then upgrade the database
os.system("git pull origin BRANCH-B")
# Upgrade the database (equivalent to flask db upgrade)
# Assume here that a new column was added called: new_column
upgrade()
# Adding a row to the database using a Model object and complying with the
# NEW database rows and format (after upgrade)
model = Model(id=1, new_column = "test")
# Above line gives an error
sqlalchemy.exc.OperationalError:(pymysql.err.OperationalError)(1054,“'字段列表'中的未知列'new_column'”)
这意味着 db.session 在执行升级操作后不会“刷新”数据库。知道怎么做吗?
谢谢,
问候。
解决方案
我最终使用 mysql 连接器(package mysql-connector-python
in pip
)连接到 mysql,然后连接到数据库并插入我想使用 mysqlINSERT
语句手动插入的记录。
作为参考,这里是语法:
...
import mysql.connector
def insert_new_records():
app = create_app()
with app.app_context():
cnx = mysql.connector.connect(
user=app.config['SQL_USERNAME'],
password=app.config['SQL_PASSWORD'],
port=app.config['SQL_PORT'],
database=app.config['DATABASE']
)
cursor = cnx.cursor()
insert_stmt = (
"INSERT INTO table (id, new_column) "
"VALUES (%s, %s)"
)
# Insert new rows
id = 1
new_column = "test" # Could be any Python datatype
data = (id, new_column)
cursor.execute(insert_stmt, data)
cnx.commit()
推荐阅读
- java - ruby 中的条件和迭代器
- android - 在 Jwplayer sdk 中播放广告时出现混合内容错误
- python - TypeError:不能将序列乘以 py3.7 中 random.py 中的非整数类型“浮点”
- android - android后退按钮点击动作
- java - 如何将 csv 文件从 GCP 云存储桶传输到 ftp 服务器
- android - 具有渐变填充颜色的矢量可绘制不支持低于 API 24
- laravel - Laravel:防止更改其他用户的项目
- excel - E在Microsoft Excel中代表什么?
- reactjs - 单元测试的结果总是“Received:0”
- javascript - 与多个 if 语句相比,array.includes 对性能有负面影响吗?