python - 使用烧瓶和 SQLAlchemy 在数据库中插入用户提供的值
问题描述
试图在 Flask 应用程序的数据库(主)中的现有表(客户端)中插入一些值。这个想法是插入用户或某些脚本提供的值(存储在变量中)
我的烧瓶脚本如下:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['DEBUG'] = True
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://user:pswd@localhost/master'
db = SQLAlchemy(app)
class clients():
__tablename__ = "clients"
def __init__(self, client_id, command, response, log_date):
client_id = 'asdfg123'
command = 'echo'
response = 'All Is Well'
log_date = '2018-06-21'
db.session.commit()
print "yo"
@app.route("/")
def main():
return 'Hello World !'
if __name__ == '__main__':
app.run()
数据库架构如下:
master=> select * from clients;
client_id | command | response | log_date
-----------+---------+------------------+------------
QWERTY123 | ls | OK Report Hai Ji | 2018-06-21
(1 row)
几乎所有文档/示例都在谈论创建模式,然后使用 self 插入值,这对我来说没用。
解决方案
因此,它似乎缺少一些使它起作用的东西。首先,模型的定义需要一些东西。
这是我认为应该的。
class Client(db.Model):
client_id = db.Column(db.String(30), primary_key=True)
command = db.Column(db.String(30))
response = db.Column(db.String(30))
log_date = db.Column(db.Date)
然后,此模型代表表中的单行。然后在您的一条路线中,您可以从表单 POST 或路径变量或其他东西中提取用户数据,并创建一个像这样的对象。
client = Client(client_id=formvar1, command=formvar2, response=formvar3, log_date=formvar4)
现在您有了要告诉 SQLAlchemy(仍在路由中)将该对象插入数据库的对象。
db.session.add(client)
db.session.commit()
推荐阅读
- javascript - Chromecast CAF 和 IMA SDK 不能一起工作
- python - 如果没有脚本正在运行,则在 shell 中处理 KeyboardInterrupt
- sql - 为什么我用 GROUP BY 计算的 COUNT DISTINCT 不正确?
- sql-server - 使用 Visual Studio 2013 从 DB 项目创建脚本
- c# - 如何加快对csv导入列表的linq查询
- mysql - 根据唯一值创建列
- angular - 类型 any[] 上不存在 flatMap、flat、flatten
- c++ - 在 C 中使用 C++ 类
- android - Google 登录失败并出现错误 12500,并在其前面出现一个奇怪的日志
- python - 对 pandas 数据框矢量化方式进行排序