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