【发布时间】:2022-06-10 17:22:54
【问题描述】:
我在 python 中使用 sqlite3,在连接到数据库并创建表后,当我尝试对包含数据库名称的表执行 SELECT 语句时,sqlite3 显示错误:
con = sqlite3.connect("my_databse")
cur = con.cursor()
cur.execute('''CREATE TABLE my_table ... ''')
cur.execute("SELECT * FROM my_database.my_table") # this works fine without the name of the database before the table name
但我从 sqlite3 收到此错误: 没有这样的表:my_database.my_table
有没有办法使用其中的数据库名称执行 SELECT 语句?
【问题讨论】:
-
这是错字吗?你的第一行使用
"my_databse"。另外,既然您已经连接到该数据库,为什么还要在 select 语句中使用数据库名称? -
为什么需要这样做?该符号适用于允许您通过单个连接访问多个数据库的 DBMS。但是
sqlite文件只包含一个数据库。将它作为表名的前缀是没有意义的。如果您这样做是因为您计划在某个时候将代码迁移到多用户数据库,那么在更像预期目标的数据库上进行开发可能会更好。命名表将是您从sqlite迁移的最少问题。 -
对不起,但这不是问题,代码工作正常@MZ
-
@BoarGules 这应该是一个答案,而不是评论。
-
@BoarGules 我正在使用第三方代码(与我的 python 脚本交互)生成我无法更改的 SQL 语句(以数据库名称为前缀),我只能使用 SQLITE3 数据库我创造