[英]How to fix SyntaxError when reading sqlite3 database into a pandas DataFrame
[英]Pandas / sqlite3: Change part of pandas dataframe and replace in sqlite database
專家們,
我正在努力尋找一種有效的方法來處理熊貓和sqlite。
我正在建立一個工具,讓用戶
用戶將只能看到excel數據(因此我需要來回寫到excel,這超出了我的示例范圍)。
用戶可以
問題: 如何使用Pandas / sqlite3最有效地執行“替換/刪除/添加”操作?
這是我的示例代碼。 如果我在df_sub.to_sql("MyTable", con = conn, index = False, if_exists="replace")
使用df_sub.to_sql("MyTable", con = conn, index = False, if_exists="replace")
而不是整個表都被替換了...那么肯定有另一種我無法想到的方法。
import pandas as pd
import sqlite3
import numpy as np
#### SETTING EXAMPLE UP
### Create DataFrame
data = dict({"City": ["London","Frankfurt","Berlin","Paris","Brondby"],
"Population":[8,2,4,9,0.5]})
df = pd.DataFrame(data,index = pd.Index(np.arange(5)))
### Create SQL DataBase
conn = sqlite3.connect("MyDB.db")
### Upload DataFrame as Table into SQL Database
df.to_sql("MyTable", con = conn, index = False, if_exists="replace")
### Read DataFrame from SQL DB
query = "SELECT * from MyTable"
pd.read_sql_query(query, con = conn)
#### CREATE SUB_TABLE AND AMEND
#### EXTRACT sub_table FROM SQL TABLE
query = "SELECT * from MyTable WHERE Population > 2"
df_sub = pd.read_sql_query(query, con = conn)
df_sub
#### Amend Sub DF
df_sub[df_sub["City"] == "London"] = ["Brussel",4]
df_sub
#### Replace new data in SQL DB
df_sub.to_sql("MyTable", con = conn, index = False, if_exists="replace")
query = "SELECT * from MyTable"
pd.read_sql_query(query, con = conn)
謝謝你的幫助!
注意:我確實嘗試通過純SQL查詢來實現,但是放棄了。 因為我不是SQL方面的專家,所以如果存在解決方案,我想與pandas一起使用。 如果沒有關於如何通過sql實現的提示,那就太好了!
我認為無法使用SQL查詢完成此任務。 使用熊貓,只能讀取對DataFrame的查詢並將DataFrame寫入數據庫(替換或追加)。
如果要更新特定的值/行或要刪除行,則必須使用SQL查詢。 您應該查看的命令例如:UPDATE,REPLACE,INSERT,DELETE
# Update the database, change City to 'Brussel' and Population to 4, for the first row
# (Attention! python indices start at 0, SQL indices at 1)
cur = conn.cursor()
cur.execute('UPDATE MyTable SET City=?, Population=? WHERE ROWID=?', ('Brussel', 4, 1))
conn.commit()
conn.close()
# Display the changes
conn = sqlite3.connect("MyDB.db")
query = "SELECT * from MyTable"
pd.read_sql_query(query, con=conn)
有關sql和pandas的更多示例,請查看https://www.dataquest.io/blog/python-pandas-databases/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.