![](/img/trans.png)
[英]Accessing db3 file path from S3 bucket using boto3 and Python
[英]Attaching multiple db3 files using python
我有 4 個 SQLite 數據庫,它們都具有完全相同的架構,但每個數據庫都有唯一的數據。 我想組合所有 4 個並對它們運行查詢。 我還想用 Pandas 對組合數據庫中的各種表進行一些分析。 這將是我想編寫腳本的重復任務。 我有一些 Python 背景,只是想在現實世界的項目中學習和使用 Python。
到目前為止,我有 4 個 .db3 文件
db1
db2
db3
db4
所有都具有相同的架構,只是來自 4 個來源的數據。 我試圖使用 sqlite3 通過 python 腳本附加所有 4 個並運行ATTACH
但遇到問題。
我的想法是遍歷文件夾中的文件並寫入新的數據庫,運行自定義查詢,輸出到數據框,並進行其他排序/過濾/匹配/圖形操作。
import sqlite3
conn = sqlite3.connect("db1.db3")
conn2 = sqlite3.connect("db2.db3")
print("Opened db1 db successfully...")
c = conn.cursor()
c2 = conn2.cursor()
rows = c.execute("SELECT * from table_name")
c.execute("ATTACH db2.db3 as newdb")
print (rows)
print (type(rows))
dir(rows)
尋找思路指導
考慮在ATTACH
之后的UNION
查詢及其來源的指示符,所有這些都使用一個連接:
import sqlite3
conn = sqlite3.connect("db1.db3")
print("Opened db1 db successfully...")
c = conn.cursor()
c.execute("ATTACH 'db2.db3' as db2")
c.execute("ATTACH 'db3.db3' as db3")
c.execute("ATTACH 'db4.db3' as db4")
union_sql = '''SELECT *, 'db1' as source
FROM table_name
UNION ALL
SELECT *, 'db2' as source
FROM db2.table_name
UNION ALL
SELECT *, 'db3' as source
FROM db3.table_name
UNION ALL
SELECT *, 'db4' as source
FROM db4.table_name
'''
rows = c.execute(sql)
for r in rows.fetchall():
print(r)
...
對於熊貓,將上面的聯合查詢傳遞給read_sql
:
df = pd.read_sql(union_sql, conn)
df.shape
df.dtypes
df.describe(include='all')
df.head(10)
df.tail(10)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.