Самый простой способ записи в таблицу SQL с помощью Python - PullRequest
0 голосов
/ 15 февраля 2019

Я ищу простой и понятный способ записи в таблицу SQL в базе данных.Я пробовал несколько разных способов, но все еще получаю некоторые ошибки и не знаю, как их интерпретировать.В моем случае я пытаюсь написать кадр данных для панд, но это также может быть двумерный массив.Мой текущий подход заключается в следующем:

# Import libraries:
from pandas.core.frame import DataFrame
from sqlalchemy import create_engine
import urllib

# In this example, a pandas dataframe is created as below:
cols = ['key1', 'locationKey', 'locationGroupKey', 'dayType', 'effectiveFromDate', 'effectiveToDate', 'prctAM0', 'prctAM1', 'prctAM2', 'prctPM0', 'prctPM1', 'prctPM2', 'prctEV0', 'prctEV1', 'prctEV02', 'prctAD']
values = [[178,10218,0,'2018-06-06 00:00:00','2018-06-06 00:00:00','2018-06-06 00:00:00',.33,0,0,.33,0,0,.33,0,0,0],                
        [178,10218,0,'2018-06-06 00:00:00','2018-06-06 00:00:00','2018-06-06 00:00:00',.33,0,0,.33,0,0,.33,0,0,0],
        [178,10218,0,'2018-06-06 00:00:00','2018-06-06 00:00:00','2018-06-06 00:00:00',.33,0,0,.33,0,0,.33,0,0,0],]
df = DataFrame(values, columns = cols)

# Create connection:
quoted = urllib.parse.quote_plus('DRIVER={SQL Server};SERVER=myServername;DATABASE=myDBname;UID=fieldReadUser;PWD=myPW')
engine = create_engine('mssql+pyodbc:///?odbc_connect={}'.format(quoted))

# Write into SQL table:
df.to_sql('tbl_Interval, schema='dbo', con=engine, if_exists='append', index = False)

РЕДАКТИРОВАТЬ: С предложениями, перечисленными ниже, код записывает в таблицу сейчас.

1 Ответ

0 голосов
/ 15 февраля 2019

Первый аргумент to_sql это просто имя таблицы.Если вам нужно указать схему, вы можете указать ее отдельно как schema=, например,

df.to_sql('tbl_Interval', engine, schema='dbo', if_exists='append', index=False)
...