pyodbc.connect () funciona, pero no sqlalchemy.create_engine (). connect ()
Estoy intentando escribir un script de Python que pueda tomar hojas de Excel e importarlas en mi base de datos SQL Server Express (con autenticación de Windows) como tablas. Para hacer esto, estoy usandopandas
leer los archivos de Excel en unpandas DataFrame
, Entonces espero usarpandas.to_sql()
para importar los datos a mi base de datos. Para usar esta función, sin embargo, necesito usarsqlalchemy.create_engine()
.
Puedo conectarme a mi base de datos usandopyodbc
solo y ejecutar consultas de prueba. Esta conexión se realiza con el siguiente código:
def create_connection(server_name, database_name):
config = dict(server=server_name, database= database_name)
conn_str = ('SERVER={server};DATABASE={database};TRUSTED_CONNECTION=yes')
return pyodbc.connect(r'DRIVER={ODBC Driver 13 for SQL Server};' + conn_str.format(**config))
...
server = '<MY_SERVER_NAME>\SQLEXPRESS'
db = '<MY_DATABASE_NAME>
connection = create_connection(server, db)
cursor = connection.cursor()
cursor.execute('CREATE VIEW test_view AS SELECT * FROM existing_table')
cursor.commit()
Sin embargo, esto no sirve de mucho ya que no puedo usarpandas.to_sql()
- para hacerlo necesito un motor desqlalchemy.create_engine()
, pero estoy luchando por descubrir cómo usar mis mismos detalles en micreate_connection()
funcionar arriba para crear con éxito un motor y conectarse a la base de datos.
He intentado muchas combinaciones en la línea de:
engine = create_engine("mssql+pyodbc://@C<MY_SERVER_NAME>\SQLEXPRESS/<MY_DATABASE_NAME>?driver={ODBC Driver 13 for SQL Server}?trusted_connection=yes")
conn = engine.connect().connection
o
engine = create_engine("mssql+pyodbc://@C<MY_SERVER_NAME>\SQLEXPRESS/<MY_DATABASE_NAME>?trusted_connection=yes")
conn = engine.connect().connection