为什么不创建数据库中的表Python

时间:2020-04-17 08:26:49

标签: python database sqlite

我正在尝试按日期创建表名

import requests, json, sqlite3

conn = sqlite3.connect('parser_all.sqlite', check_same_thread = False)
url = 'http://127.0.0.1:8000/api/reg/'

full_page = requests.get(url, auth=("admin","admin"))
pars=json.loads(full_page.content.decode('utf-8'))

a = []
for i in pars:
    a.append(i["date_visit"])

unique = list(set(a))

def get_registers(unique):
    for i in range(len(unique)):
        register =  unique[i]
        cursor = conn.cursor()
        with conn:
            cursor.execute('CREATE TABLE IF NOT EXISTS ' + register + ' (name STRING )')
        cursor.close()

get_registers(unique)

在['13 -04-2020','10 -04-2020']中采样数据。

最后我得到一个错误

cursor.execute('CREATE TABLE IF NOT EXISTS ' + register + ' (name STRING )')
sqlite3.OperationalError: near "13": syntax error

1 个答案:

答案 0 :(得分:1)

在您的情况下,SQL引擎收到查询:

CREATE TABLE IF NOT EXISTS 13-04-2020 (name STRING )

并返回错误,因为13-04-2020是表达式,不是有效的表名

您可以通过引用表名称(例如"13-04-2020")来解决该问题:

cursor.execute('CREATE TABLE IF NOT EXISTS "' + register + '" (name STRING )')

DB Fiddle