SQLite3 语法错误:无法在 Python 中创建表

问题描述 投票:0回答:1

我在构建数据库时遇到问题。每当我尝试运行下面提供的函数时,都会遇到未指定的语法错误。

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

我尝试搜索类似的问题,但找不到任何匹配项。谁能帮助我了解可能导致此错误的原因以及如何修复它?任何帮助将不胜感激。谢谢!

python python-3.x database sqlite sqlite3-python
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()
© www.soinside.com 2019 - 2024. All rights reserved.