为了账号安全,请及时绑定邮箱和手机立即绑定

如何查找并修复代码中的近“(”:语法错误

如何查找并修复代码中的近“(”:语法错误

偶然的你 2023-07-27 15:53:48
这里的用户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()此代码应使用用户 ID 的名称创建一个数据库,以便每个用户都可以使用自己的 ID 访问其数据库。启动时create_the_base(message)返回错误 [near "(": 语法错误] 错误是什么? 在我看来,错误显然不在create_the_base中,而是在创建数据库时的类中。
查看完整描述

2 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

您至少应该获得指向有问题的代码行的堆栈跟踪。

我认为问题在于表名CREATE TABLE不应该加括号:

    cursor.execute("""CREATE TABLE base_name_by_id ("Name" TEXT, "Day"    TEXT, "Month" TEXT, "Year" TEXT) """)

SQLite3 作为一个针对大小进行了优化的嵌入式数据库,不太擅长提供可读的错误消息。


查看完整回答
反对 回复 2023-07-27
?
交互式爱情

TA贡献1712条经验 获得超3个赞

模式名称不需要括号。

这是工作 SQL:

CREATE TABLE base_name_by_id ("Name" TEXT, "Day" TEXT, "Month" TEXT, "Year" TEXT)

如果您想动态生成该 SQL 命令,请考虑使用fstring来执行此操作:

create_table_command = f'CREATE TABLE {base_name_by_id} ("Name" TEXT, "Day" TEXT, "Month" TEXT, "Year" TEXT)'
cursor.execute(create_table_command)


查看完整回答
反对 回复 2023-07-27
  • 2 回答
  • 0 关注
  • 75 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信