Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

DatabaseError :“nem todos os argumentos convertidos durante a formatação de string” quando eu uso pandas.io.sql.to_sql()


pandas.read_sql use:
  • um objeto de conexão sqlalchemy engine.connect()
  • um objeto db api somente para sqlite

usando raw_connection() , você tem um objeto de conexão db api, então o pandas acredita que é uma conexão com um banco de dados sqlite (como vemos em seu erro FROM sqlite_master WHERE )

você precisa usar 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')))

saídas:
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')]

como esperado