sqlite Py-Script在提交html表单后提交到SQL表

h6my8fg2  于 2023-04-21  发布在  SQLite
关注(0)|答案(1)|浏览(133)

我有一个HTML文件,其中包含一个用于提交表单的按钮,该按钮运行以下Py-Script代码:

import sqlite3

def sub(*args, **kwargs):
    conn = sqlite3.connect('data.sqlite')
    cursor = conn.cursor()

    fname = Element('fname').value.title()
    lname = Element('lname').value.title()
    email = Element('email').value
    pword = Element('pword').value

    sqlite_insert = "INSERT INTO accounts (first_name, last_name, email, password) VALUES (?, ?, ?, ?);"
    data_tuple = (fname, lname, email, pword)
    cursor.execute(sqlite_insert, data_tuple)

    conn.commit()
    print("commited")
    conn.close()
    print("closed")

我还在HTML中添加了py-config标签,以获取正确的文件:sqlite,但是,即使当函数运行并打印“commited”和“closed”时,新数据也不会保存到SQL数据库中
我想从表单中的新数据保存到sqlite文件一旦函数sub()运行。

qni6mghb

qni6mghb1#

当你在Pyscript中获取一个文件时,大概是用\<py-config\>中的[[fetch]]键,你是在浏览器窗口中将该文件的内容加载到内存中。具体来说,你是在将它加载到Emscripten示例化的virtual file system中,以帮助C/C++程序在Web Assembly中运行。(在本例中,C程序是CPython解释器)。当您在Python中更改该文件时,您正在更改该文件的内存版本,而不是该文件最初加载的位置。
要使您的更改持久保存在原始文件的位置,您需要某种方式将这些更改或该文件发送回其原始位置。如果是本地文件,您可以让用户下载数据库文件,或使用Chrome的File System Access API为浏览器提供对特定文件夹的直接读/写访问权限。对于托管在Web上的数据库,您可能会考虑向托管数据库的端点发出API请求,直接修改数据库本身或重新上传修改后的数据库文件。

相关问题