【发布时间】:2017-07-03 11:44:14
【问题描述】:
我想在 python 中为 sqlite3 数据库创建一个模式,但 sqlite 似乎不支持CREATE SCHEMA (sqlite docs)。我查看了ATTACH,似乎可以通过使用第二个数据库来完成这项工作,但我只需要一个具有架构的数据库。
我想做一些事情:
import sqlite3
db = sqlite3.connect('db_file.db')
db.execute("CREATE TABLE my_schema.my_table(column TYPE);")
db.commit()
但是,它会引发异常:
Traceback (most recent call last):
File "C:/Users/Mod/Projects/sandbox/test_db.py", line 8, in <module>
db.execute("CREATE TABLE my_schema.my_table(column TYPE);")
OperationalError: unknown database my_schema
我知道我可以像这样使用ATTACH...
import sqlite3
db = sqlite3.connect('db_file.db')
db.execute("ATTACH DATABASE 'db_file_2.db' AS 'my_schema';")
db.execute("CREATE TABLE my_schema.my_table(column TYPE);")
db.commit()
...但是有没有办法在没有第二个数据库的情况下创建模式?
【问题讨论】:
-
那为什么还需要模式呢?为什么不直接使用
CREATE TABLE my_table(column TYPE);? -
无论如何,主数据库使用架构名称
main。 -
对不起,我应该在我的原始帖子中澄清。我必须使用来自 MySQL 数据库的相同 INSERT 查询。如果 mysql db 连接以任何方式失败,则会创建 sqlite3 数据库。
-
通过将 SQLite 模式设置为
main,我设法在 PostgreSQL 和 SQLite 之间保留了类似的 SQLAlchemy 代码。