我正在尝试使用一个panda数据框来插入数据到sql中。我使用panda是因为在我将它插入到SQL表中之前,我需要删除一些列。数据库在云中,但这不是问题所在。我已经能够创建静态字符串,将它们插入到数据库中&它工作得很好。
数据库是postgres db,使用pg8000驱动程序。
在这个例子中,我取出一个列和一个值,并试图将其插入到数据库中。
connection = db_connection.connect()
for i, rowx in data.iterrows():
with connection as db_conn:
name_column = ['name']
name_value = [data.iloc[0]["name"]]
cols = "`,`".join([str(i) for i in name_column])
sql = "INSERT INTO person ('" + cols + "') VALUES ( " + " %s,"* ( len(name_value) - 1 ) + "%s" + " )"
db_conn.execute(sql, tuple(name_value))
我得到的错误通常与cols
的格式有关。
Error: 'syntax error at or near "\'name\'"
变量列:
(Pdb) cols
'name'
我猜'name'是一个字符串会让人不舒服,但这似乎很奇怪。
变量sql:
"INSERT INTO persons ('name') VALUES ( %s )"
我不是字符串封装的爱好者,我从一个指南中得到了这个:https://www.dataquest.io/blog/sql-insert-tutorial/
只是在寻找一个可靠的方法来脚本这个插入从Pandas到pg。
1条答案
按热度按时间wlzqhblo1#
IIUC,我认为您可以使用
sqlalchemy
包与to_sql()
直接导出Pandas Dataframe 到数据库表。请考虑此处的代码结构
或者您可以使用您的pg8000作为您的选择
然后,您可以导出到如下所示的表(
df
是您的Pandas Dataframe )或者,如果要追加,请使用
if_exists='append'