SQLite3 语法错误:无法在 Python 中创建表
我在搭建数据库的时候遇到了一个问题。每次我尝试运行下面这个函数时,就会出现一个不明的语法错误。
import sqlite3
def create_all_sql():
with sqlite3.connect("data.db", check_same_thread=False) as con:
c = con.cursor()
c.execute("""CREATE TABLE IF NOT EXISTS users (
user_id TEXT UNIQUE PRIMARY KEY,
user_name TEXT,
hashed_password BLOB,
hashed_salt BLOB,
device_ver BLOB UNIQUE
)""")
c.execute("""CREATE TABLE IF NOT EXISTS devices (
device_id BLOB UNIQUE PRIMARY KEY,
user_id TEXT,
FOREIGN KEY (user_id) REFERENCES users(user_id),
device_name TEXT,
device_type TEXT,
north_cord TEXT,
east_cord TEXT,
timestamp TEXT
)""")
create_all_sql()
错误信息:
Traceback (most recent call last):
File "", line 28, in <module>
create_all_sql()
File "", line 15, in create_all_sql
c.execute("""CREATE TABLE IF NOT EXISTS devices (
sqlite3.OperationalError: near "device_name": syntax error
我试着搜索了一些类似的问题,但没有找到相关的答案。有没有人能帮我理解一下这个错误可能是什么原因造成的,以及怎么解决它?任何帮助都非常感谢。谢谢!
1 个回答
0
你忘记保存数据库的更改了
import sqlite3
def create_all_sql():
with sqlite3.connect("data.db", check_same_thread=False) as con:
c = con.cursor()
c.execute("""CREATE TABLE IF NOT EXISTS users (
user_id TEXT UNIQUE PRIMARY KEY,
user_name TEXT,
hashed_password BLOB,
hashed_salt BLOB,
device_ver BLOB UNIQUE
)""")
c.execute("""CREATE TABLE IF NOT EXISTS devices (
device_id BLOB UNIQUE PRIMARY KEY,
user_id TEXT,
FOREIGN KEY (user_id) REFERENCES users(user_id),
device_name TEXT,
device_type TEXT,
north_cord TEXT,
east_cord TEXT,
timestamp TEXT
)""")
con.commit()
con.close()
create_all_sql()