Как загрузить данные из dataFrame в таблицу mssql
engine = sqlalchemy.create_engine('mssql+pyodbc://<Username>:<password>@<DBServername>/<DBName>', pool_pre_ping=True)
У меня есть данные для загрузки в DataFrame, используя строку подключения, когда я перебираю каждую строку в DF, я могу вставить данные в таблицу (по 1 строке за раз, используя инструкцию INSERT INTO..), но я хочу использовать <DataFrame>.to_sql("<Table_name>", engine, if_exists='append')
Пожалуйста, помогите мне понять, если я что-то упустил?
но я продолжаю получать эту ошибку
/Library/Python/2.7/site-packages/sqlalchemy/connectors/pyodbc.py:79: SAWarning: No driver name specified; this is expected by PyODBC when using DSN-less connections
"No driver name specified; "
Traceback (most recent call last):
File "/Users/snaidu/renuka/python-projects/staging/test.py", line 131, in <module>
print(loaddmvcsvfile())
File "/Users/snaidu/renuka/python-projects/staging/test.py", line 115, in loaddmvcsvfile
result.to_sql("table1", engine, if_exists='append')
File "/Library/Python/2.7/site-packages/pandas/core/generic.py", line 1534, in to_sql
chunksize=chunksize, dtype=dtype)
1 ответ
Вам нужно указать драйвер SQL, который вы хотите использовать, для MS-SQL это будет родной драйвер SQL Server Native Client 11.0
Так, например, вы можете использовать что-то вроде этого:
cxn_string = 'mssql+pyodbc://<Username>:<password>@<DBServername>/<DBName>?driver=SQL+Server+Native+Client+11.0'
engine = sqlalchemy.create_engine(cxn_string, pool_pre_ping=True)
Но это немного долго и трудно для чтения, поэтому я обычно делаю вспомогательную функцию, что-то вроде этого
import sqlalchemy
import urllib
def sql_connect(server, username, password, database, **kwargs):
'''Connect to SQL server'''
parameters = {'driver': 'SQL Server Native Client 11.0'}
string = r'mssql+pyodbc://{username}:{password}@{server}/{database}?{parameters}'
cxn_string = string.format(server=server,
username=username,
password=password,
database=database,
parameters=urllib.parse.urlencode(parameters))
return sqlalchemy.create_engine(cxn_string, **kwargs)