Truncate table funktioniert nicht mit SQL server-sqlalchemy-Motor und pandas
Kann ich erfolgreich Abfragen und einfügen von Daten mit sqlalchemy und pandas:
from sqlalchemy import create_engine
import pandas as pd
engine = create_engine('mssql://myserver/mydb?driver=SQL+Server+Native+Client+11.0?trusted_connection=yes')
Lesen tempy Tabelle:
sql_command = """
select top 100 * from tempy
"""
df = pd.read_sql(sql_command, engine)
print df
tempID tempValue
0 1 2
Anfügen die neuen Daten:
df_append = pd.DataFrame( [[4,6]] , columns=['tempID','tempValue'])
df_append.to_sql(name='tempy', con=engine, if_exists = 'append', index=False)
df = pd.read_sql(sql_command, engine)
print df
tempID tempValue
0 1 2
1 4 6
Versuchen abgeschnitten Daten:
connection = engine.connect()
connection.execute( '''TRUNCATE TABLE tempy''' )
connection.close()
Bitte der Tabelle wieder, aber abschneiden ist fehlgeschlagen:
df = pd.read_sql(sql_command, engine)
print df
tempID tempValue
0 1 2
1 4 6
- Haben Sie versucht, Begehen?
- Kann ich nicht reproduzieren dieses Verhaltens. Was ist Ihr Pandas und SQLAlchemy-version? BTW Sie müssen nicht erstellen
connection
- Objekt, das folgende funktioniert:engine.execute('truncate table tempy')
- pandas 0.9.1 und sqlalchemy 1.0.13
- danke für den Tipp Begehen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe das gleiche problem mit
pandas
0.19.2 und sqlalchemy1.1.5
.So wie ich das sehe
autocommit
ist nicht gezwungen, inengine.execute()
bei der Ausführung einesTRUNCATE
- Anweisung. Wenn ich gezwungen es manuell dannTRUNCATE
perfekt funktioniert:Es ist Fantasie, dass
DROP
funktioniert perfekt, ohne dassautocommit
...autocommit
war der Schlüssel.Dieser arbeitete für mich:
Hier ist eine vollständige Lösung anhand der Frage, mit sqlalchemy 1.1.15 unter Windows wurde ich empfangen von Fehler zu versuchen, die anderen Lösungen: