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')]
予想通り