簡體   English   中英

使用python附加多個db3文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM