我在构建数据库时遇到问题。每当我尝试运行下面提供的函数时,都会遇到未指定的语法错误。
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
我尝试搜索类似的问题,但找不到任何匹配项。谁能帮助我了解可能导致此错误的原因以及如何修复它?任何帮助将不胜感激。谢谢!
您忘记保存数据库更改
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()