pyodbc.connect () funciona, mas não sqlalchemy.create_engine (). connect ()
Estou tentando escrever um script Python que pode pegar as planilhas do Excel e importá-las para meu banco de dados do SQL Server Express (com autenticação do Windows) como tabelas. Para fazer isso, estou usandopandas
para ler os arquivos do Excel em umpandas DataFrame
, Então espero usarpandas.to_sql()
para importar os dados para o meu banco de dados. Para usar esta função, no entanto, preciso usarsqlalchemy.create_engine()
.
Consigo me conectar ao meu banco de dados usandopyodbc
sozinho e execute consultas de teste. Esta conexão é feita com o seguinte 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()
No entanto, isso não é muito útil, pois não posso usarpandas.to_sql()
- para isso, preciso de um mecanismo desqlalchemy.create_engine()
, mas estou tendo dificuldades para descobrir como usar meus mesmos detalhes no meucreate_connection()
acima para criar com êxito um mecanismo e conectar-se ao banco de dados.
Eu tentei muitas, muitas combinações ao longo das linhas 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
ou
engine = create_engine("mssql+pyodbc://@C<MY_SERVER_NAME>\SQLEXPRESS/<MY_DATABASE_NAME>?trusted_connection=yes")
conn = engine.connect().connection