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