pandas数据帧到mysql db错误数据库风味mysql不受支持

时间:2016-11-28 11:11:11

标签: python python-2.7 python-3.x pandas

我在pandas dataframe df中有一个表。

   product_id_x    product_id_y    count       date
0   288472           288473          1     2016-11-08 04:02:07
1   288473           2933696         1     2016-11-08 04:02:07
2   288473           85694162        1     2016-11-08 04:02:07

我想将此表保存在mysql数据库中。

我正在使用MySQLdb包。

import MySQLdb
conn = MySQLdb.connect(host="xxx.xxx.xx.xx", user="name", passwd="pwd", db="dbname")

df.to_sql(con = conn, name = 'sample_insert', if_exists = 'append', flavor = 'mysql', index = False)

我使用此查询将其放入我的数据库中。

但是我收到了错误。

ValueError: database flavor mysql is not supported

我的数据类型是所有列的str。

type(df['product_id_x'][0]) = str
type(df['product_id_y'][0]) = str
type(df['count'][0])        = str
type(df['date'][0])         = str

我不想使用sqlalchemy或其他软件包,任何人都可以告诉我这里的错误是什么。 提前致谢

2 个答案:

答案 0 :(得分:9)

在pandas版本0.19中不推荐使用'mysql'。您必须使用sqlalchemy中的引擎来创建与数据库的连接。

bot.dialog('/mydialog', [
    function (session) {
    // Ask the user to select an item from a carousel.
    var msg = new builder.Message(session)
        .textFormat(builder.TextFormat.xml)
        .attachmentLayout(builder.AttachmentLayout.carousel)
        .attachments([
            new builder.ThumbnailCard(session)
                .title("Card number 1")
                .text("Description first card")
              .images([
                builder.CardImage.create(session, "https://www.example.org/img1.gif")
                      .tap(builder.CardAction.showImage(session, "ttps://www.example.org/img1.gif")),
             ])
                .buttons([
                    builder.CardAction.openUrl(session, "https://google.com", "Website"),
                    builder.CardAction.imBack(session, "select:100", "button 1"),
                    builder.CardAction.imBack(session, "select:101", "Button2")

                ]),
            new builder.ThumbnailCard(session)
                .title("Card 2")
                .text("Description card 2")
                .images([
                    builder.CardImage.create(session, "https://image.jpg")
                        .tap(builder.CardAction.showImage(session, "https://image.jpg")),
                ])
                .buttons([
                    builder.CardAction.openUrl(session, "https://google.com", "Website"),
                    builder.CardAction.imBack(session, "select:200", "button3"),
                    builder.CardAction.imBack(session, "select:201", "button4")
                ]),
           ]);

    builder.Prompts.choice(session, msg, "select:100|select:101|select:200|select:201");
 },
function (session, results) {
    var action, item;
    var kvPair = results.response.entity.split(':');
    switch (kvPair[0]) {
        case 'select':
            action = 'selected';
            break;
    }
    switch (kvPair[1]) {
        case '100':
            item ="/dialog1";
            break;
        case '101':
            item ="/dialog2";
            break;
        case '200':
            item ="/dialog3";
            break;
        case '201':
            item ="/dialog4";
            break;

    }

           session.beginDialog(item);
} 

]);

定义引擎时,需要指定用户,密码,主机和数据库。在您的具体情况下,这应该是:

from sqlalchemy import create_engine
engine = create_engine("mysql+mysqldb://USER:"+'PASSWORD'+"@localhost/DATABASE")
df.to_sql(con=engine, if_exists='append', index=False)

答案 1 :(得分:0)

flavor使用的选项似乎不再存在。简要介绍一下这些文档证实了这一点:

风味'sqlite',默认无

DEPRECATED:此参数将在以后的版本中删除,因为如果未安装SQLAlchemy,“sqlite”是唯一受支持的选项。