使用flask和SQLAlchemy在数据库中插入用户提供的值

时间:2018-06-21 17:56:47

标签: python postgresql flask sqlalchemy flask-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插入值,这对我没有用。

1 个答案:

答案 0 :(得分:0)

因此,要使其正常工作,似乎缺少一些东西。首先,模型的定义需要一些注意事项。

这就是我认为应该的。

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()