這里的用戶id是從用戶的消息中傳遞過來的@bot.message_handler(commands = ['create'])def create_the_base(message): bot.send_message(message.chat.id, 'Создание базы....') base_create_text = message.chat.id base_create_final = base_create(user_id = base_create_text) base_create_final.base_create_process()下面是使用的類class base_create:def __init__(self,user_id): """Обозначение переменной user_id для дальнейшего использования""" self.user_id = user_iddef base_create_process(self): """Создание базы с именем user_id""" base_name_by_id=str(self.user_id) db_connect=sqlite3.connect(base_name_by_id) cursor=db_connect.cursor() cursor.execute("""CREATE TABLE (base_name_by_id) ("Name" TEXT, "Day" TEXT, "Month" TEXT, "Year" TEXT) """) db_connect.commit()此代碼應(yīng)使用用戶 ID 的名稱創(chuàng)建一個數(shù)據(jù)庫,以便每個用戶都可以使用自己的 ID 訪問其數(shù)據(jù)庫。啟動時create_the_base(message)返回錯誤 [near "(": 語法錯誤] 錯誤是什么? 在我看來,錯誤顯然不在create_the_base中,而是在創(chuàng)建數(shù)據(jù)庫時的類中。
2 回答

慕哥6287543
TA貢獻(xiàn)1831條經(jīng)驗 獲得超10個贊
您至少應(yīng)該獲得指向有問題的代碼行的堆棧跟蹤。
我認(rèn)為問題在于表名CREATE TABLE
不應(yīng)該加括號:
cursor.execute("""CREATE TABLE base_name_by_id ("Name" TEXT, "Day" TEXT, "Month" TEXT, "Year" TEXT) """)
SQLite3 作為一個針對大小進(jìn)行了優(yōu)化的嵌入式數(shù)據(jù)庫,不太擅長提供可讀的錯誤消息。

交互式愛情
TA貢獻(xiàn)1712條經(jīng)驗 獲得超3個贊
模式名稱不需要括號。
這是工作 SQL:
CREATE?TABLE?base_name_by_id?("Name"?TEXT,?"Day"?TEXT,?"Month"?TEXT,?"Year"?TEXT)
如果您想動態(tài)生成該 SQL 命令,請考慮使用fstring來執(zhí)行此操作:
create_table_command?=?f'CREATE?TABLE?{base_name_by_id}?("Name"?TEXT,?"Day"?TEXT,?"Month"?TEXT,?"Year"?TEXT)' cursor.execute(create_table_command)
添加回答
舉報
0/150
提交
取消