繁体   English   中英

Pandas写表到MySQL:“无法回滚”

Pandas Write table to MySQL: “unable to rollback”

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我需要帮助才能使这个工作。 我有一个pd.DataFrame (df) ,我需要加载到MySQL数据库。 我不明白错误消息的含义以及如何解决它。

任何帮助将受到高度赞赏。

这是我试过的:

    import MySQLdb
    from pandas.io import sql

    #METHOD 1 
    db=MySQLdb.connect(host="***",port=***,user="***",passwd="***",db="***")
    df.to_sql(con=db, name='forecast', if_exists='replace', flavor='mysql')
    ##Also tried
    sql.write_frame(df, con=db, name='forecast', if_exists='replace', flavor='mysql')

   **DatabaseError**: Execution failed on sql: SHOW TABLES LIKE %s
   (2006, 'MySQL server has gone away')
   unable to rollback


   #METHOD 2: using sqlalchemy
   from sqlalchemy import create_engine

   engine =   create_engine("mysql+mysqldb://**username***:**passwd**@***host***:3306/**dbname**")
   conn = engine.raw_connection()
   df.to_sql(name='demand_forecast_t', con=conn,if_exists='replace',    flavor='mysql',index=False, index_label='rowID')
   conn.close()

错误消息是:

**OperationalError**: DatabaseError: Execution failed on sql: SHOW TABLES LIKE %s
(2006, 'MySQL server has gone away') unable to rollback
4 个回复

使用sqlalchemy时,您应该传递引擎而不是原始连接:

engine = create_engine("mysql+mysqldb://...")
df.to_sql('demand_forecast_t', engine, if_exists='replace', index=False)

不使用sqlalchemy写入MySQL(因此指定flavor='mysql' )已弃用。

当问题是你有一个太大的框架可以立即写入时,你可以使用chunksize关键字(参见docstring )。 例如:

df.to_sql('demand_forecast_t', engine, if_exists='replace', chunksize=10000)

我能够解决这个问题。 我试图将一个大表加载到MySQL中,结果导致错误。 一个简单的for循环以块的形式上传数据解决了这个问题! 非常感谢所有回复的人。

对我来说这是固定使用

MySQLdb.connect("127.0.0.1","root","","db" )

代替

MySQLdb.connect("localhost","root","","db" )

然后

df.to_sql('df',sql_cnxn,flavor='mysql',if_exists='replace', chunksize=100)

您可以使用mysql flavor(使用DBAPI连接)以下列方式在mysql表中编写pandas数据帧

step1:安装mysqldb模块 - $ sudo apt-get install python-dev libmysqlclient-dev然后$ pip install MySQL-python

step2:与mysql import MySQLdb连接import MySQLdb con = MySQLdb.connect("hostname","username","password","databasename")

step3:使用df.to_sql df.to_sql('TableName',con = con,flavor='mysql',if_exists='replace', chunksize=100)在mysql表中编写pandas数据帧

2 无法在 MYSQL 中回滚 BMT EJB UserTransaction

我的应用程序使用 Struts2、EJB3 会话无状态 bean、JDBC、MYSQL。 我无法在异常情况下回滚完整的事务。 我在 EJB3 Statemless bean 中使用了 BMT、用户事务,并使用了 JDBC,数据库是 MYSQL。 我正在插入三条记录,一条在父表中,两条记录在子表中。 ...

3 为什么MySQL事务无法在错误时回滚?

我正在尝试学习如何在出错时回滚事务。 我创建了以下storedProcedure以了解其工作原理。 Test1表具有两个字段,即ID和FIELD。 Test2表也有两个字段,即ID和FIELD。 我故意将表查询设置为test3失败。 当我运行时,我得到了错误,但是它没有在te ...

4 MySQL中的事务 - 无法回滚

我正在使用MySQL 5.0.27,并试图让交易工作。 我按照本教程: http://dev.mysql.com/doc/refman/5.0/es/connector-net-examples-mysqltransaction.html 仍然无法让这些工作。 我试图更新的表是I ...

6 回滚失败的MySQL

当我提交此查询时,它起作用了,但是当我想回滚到保存点时,它失败了。 这是我的回滚查询。 它说我的保存点A不存在。 谁能指出我所缺少的吗? ...

7 回滚MySQL查询

如果我在基于IF的结构上有多个查询链,例如: 如果下一个查询失败,是否有最佳方式回滚上一个查询? 否则,我将使前2个查询成功完成,从而编辑了数据库,但是3°失败,因此3°和4°没有编辑dabatase,导致其损坏。 我想到了类似的东西: 但是以上方法赋予更多机会使更多查询 ...

9 MySQL提交和回滚

我开发了一个网页,因为我遇到了这个问题。 请参阅下面。 在用户表中,我具有以下字段: 用户身份 密码 地址 电话 电子邮件 在服务表中,我具有以下字段: Ser_name ser_id USER_Refid ...

2009-08-18 13:17:44 1 392   php/ mysql
10 MySQL和Transactions没有回滚

我正在编写一个导入例程,并希望在发生错误时导致整个导入失败。 我正在使用设置为InnoDB的MySQL数据库和一个用于驱动导入的asp页面。 我想启动一个事务,然后在发生错误时回滚,或者如果成功则提交。 我的问题是,当第4行发生错误时,前3个条目将保存在数据库中而不是回滚。 以下是我 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM