【发布时间】:2021-12-11 07:53:24
【问题描述】:
我熟悉 python/sqlite3 接口。我已经使用它构建了一个包含三个表的数据库,并输入了来自各种来源等的数据。我有一个单独的“.sh”/notepad 脚本我运行后创建两个视图(一个来自两个表中的一个),然后是从最初的两个视图创建的最终连接视图,最后生成最终报告,当然还有带有附加信息的数据库。目前要运行它,我只是在 sqlite3 name.db 之后复制并粘贴该代码。
我的问题:是否可以通过使用 python/sqlite3 接口创建一个简单的 VIEW 和一个连接的 VIEW 来自动执行此操作。即:使用connect/cursor/execute 语句创建VIEW(不是表)?
作为事后的想法,可能只使用从两个初始表创建的最终连接视图就可以完成此操作,但我稍后会回到这个问题。感谢您的宝贵时间。
编辑:这是我拥有的代码,但它不是创建视图。在之前的脚本创建数据库和表、输入数据之后,它从现有的 TABLE1 和 TABLE2 中提取。之后没有报错信息。
db = "/path/to/db/dbfile"
def create_connection(sqliteDB):
conn=None
try:
conn=sqlite3.connect(sqliteDB)
return conn
except Error as e:
print(e)
return conn
def create_view(conn, create_view_sql):
try:
c=conn.cursor()
c.execute(create_view_sql)
except Error as e:
print (e)
def main(db):
database = db
sqlite_create_view1 = """CREATE VIEW view1 as
select id, b, c from TABLE1;"""
sqlite_create_view2 = """CREATE VIEW view2 as
select id, d, e, f from TABLE2;"""
sqlite_create_final = """CREATE VIEW final as
select a.id, a.b, a.c, b.id, b.d, b.e, b.f
from view1 a
left join view2 b using (id); """
conn.create_connection(database)
conn.text_factory = str
if conn is Not None:
create_view (conn, sql_create_view1)
create_view (conn, sql_create_view2)
create_view (conn, final)
else:
print ("Error - cannot update view")
【问题讨论】:
-
您可以从 Python 的 sqlite 库创建视图,就像创建表或索引或其他任何内容一样。只需执行适当的语句。 sqlite.org/lang_createview.html
-
你说的是什么意思...但它不是创建视图...?你检查数据库了吗?
-
我做了,代码运行没有错误,但没有创建视图。我使用的格式与创建表格的方式相同。不确定是否遗漏了什么......
标签: python sql database sqlite