sql >> データベース >  >> RDS >> Mysql

DatabaseError:pandas.io.sql.to_sql()を使用すると、「文字列のフォーマット中にすべての引数が変換されるわけではありません」

    pandas.read_sqlは次のいずれかを使用します:

    • sqlalchemy接続オブジェクトengine.connect()
    • dbapiオブジェクトsqlite専用

    raw_connection()を使用する 、db api接続オブジェクトがあるため、pandasはそれがsqliteデータベースへの接続であると信じています(エラーFROM sqlite_master WHEREに表示されます) )

    con = engine.connect()を使用する必要があります

    import sqlalchemy
    import pandas
    engine = sqlalchemy.create_engine('...')
    with engine.connect() as conn:
        print('sqla:', list(conn.execute('select * from users')))
        df = pandas.read_sql('select * from users', conn)
        print('df:', df)
        df.to_sql('users2', conn)
        print('sqla:', list(engine.connect().execute('select * from users2')))
    

    出力:

    sqla: [(1, 'toto'), (2, 'titi'), (3, 'tutu'), (4, 'tata')]
    df:    id  name
    0   1  toto
    1   2  titi
    2   3  tutu
    3   4  tata
    sqla: [(1, 'toto'), (2, 'titi'), (3, 'tutu'), (4, 'tata')]
    

    予想通り



    1. mysqlフェッチレコードを含む電子メールを送信します

    2. DjangoコードまたはMySQLトリガー

    3. 接続プール戦略:良い、悪い、または醜い?

    4. Oracleで時間のない日付のみを取得する