试图使用python将pandas数据框写入MySQL表to_sql
。以前一直在使用flavor='mysql'
,但是将来会贬值,并希望开始过渡到使用SQLAlchemy引擎。
样例代码:
import pandas as pd
import mysql.connector
from sqlalchemy import create_engine
engine = create_engine('mysql+mysqlconnector://[user]:[pass]@[host]:[port]/[schema]', echo=False)
cnx = engine.raw_connection()
data = pd.read_sql('SELECT * FROM sample_table', cnx)
data.to_sql(name='sample_table2', con=cnx, if_exists = 'append', index=False)
读取工作正常,但to_sql
存在错误:
DatabaseError:在SQL’SELECT name FROM sqlite_master WHERE type =’table’AND
name = ?;’上执行失败:在字符串格式化期间参数数目错误
为什么看起来要使用sqlite?sqlalchemy与mysql特别是mysql.connector的正确用法是什么?
我也尝试将引擎作为连接传递,这给了我一个错误,该错误没有引用任何游标对象。
data.to_sql(name='sample_table2', con=engine, if_exists = 'append', index=False)
>>AttributeError: 'Engine' object has no attribute 'cursor'
使用引擎代替raw_connection()
工作引擎:
import pandas as pd
import mysql.connector
from sqlalchemy import create_engine
engine = create_engine('mysql+mysqlconnector://[user]:[pass]@[host]:[port]/[schema]', echo=False)
data.to_sql(name='sample_table2', con=engine, if_exists = 'append', index=False)
不清楚为什么我昨天尝试这样做时会给我更早的错误。
我试图导出我的数据帧到sql数据库(Postgres)。 我创建了如下表: 我想把这个数据框写到sql表中: 但是,当我运行命令写入数据库时,我意识到已经创建了一个新表"OUTPUT",其中插入了数据。 如何避免在表中插入双引号?
问题内容: 我用来将数据框导出到mysql中。但是,我发现具有长字符串内容(例如url)的列被截断为63位数字。导出时,我从ipython笔记本收到以下警告: /usr/local/lib/python2.7/site- packages/pandas/io/sql.py:248:警告:第3行cur.executemany(insert_query,data)的列’url’的数据被截断了 对于不同
问题内容: 我正在编写一个脚本,以将带有标头的大.xlsx文件减少到一个csv中,然后根据标头名称仅写有所需列的新csv文件。 我得到的错误是最后一部分代码,它说 我确定我忽略了一些愚蠢的事情,但是我已经阅读了熊猫网站上的to_csv文档,但我仍然感到茫然。我知道我使用了不正确的to_csv参数,但我似乎无法理解我猜的文档。 任何帮助表示赞赏,谢谢! 问题答案: 选择特定列的方法是这样的-
我正试图在模式下将写入文件格式(在最新的pandas版本0.21.0中引入)。但是,文件将被新数据覆盖,而不是附加到现有文件。我错过了什么? 写入语法是 读取语法是
问题内容: 我正在加载一个包含浮点和字符串数据混合的txt文件。我想将它们存储在可以访问每个元素的数组中。现在我正在做 这是输入文件的结构:。 现在,数据将作为唯一列导入。我如何划分它,以便分别存储不同的元素(所以我可以调用)?以及如何定义标题? 问题答案: 您可以使用: 添加您的代码,在引号之间留一个空格。因此,熊猫可以检测值之间的空格并按列排序。数据列用于命名您的列。
问题内容: 我正在使用to_csv将Multiindex DataFrame写入csv文件。csv文件的一列包含元组中的多索引,例如: 但是,我希望能够将Multiindex输出到两列而不是一列的元组,例如: 看起来可以为列实现此目的,但对于行则没有这样的选择。有没有办法做到这一点? 问题答案: 我认为这可以做到 使用索引重复来编写(虽然有点骇人听闻) 回读实际上有点棘手