使用python编写SQL表的最简单方法

使用python编写SQL表的最简单方法,python,sql,database,pandas,pyodbc,Python,Sql,Database,Pandas,Pyodbc,我正在寻找一种简单易懂的方法来写入数据库中的SQL表。 我尝试了两种不同的方法,但仍然有一些错误,不知道如何解释它们。 在我的例子中,我尝试编写一个pandas数据帧,但它也可以是2dnumpy数组。 我目前的做法如下: # Import libraries: from pandas.core.frame import DataFrame from sqlalchemy import create_engine import urllib # In this example, a pandas

我正在寻找一种简单易懂的方法来写入数据库中的SQL表。 我尝试了两种不同的方法,但仍然有一些错误,不知道如何解释它们。 在我的例子中,我尝试编写一个pandas数据帧,但它也可以是2dnumpy数组。 我目前的做法如下:

# 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)
编辑:根据下面列出的建议,代码现在正在写入表中

sql的第一个参数只是表名。如果需要指定模式,则可以单独提供模式=,例如


int与text@RobertHarvey:我尝试用整数替换数据框中的字符串,并将所有数据框元素转换为字符串,以防数据库仅接受字符串。两个都给了我同样的错误。谢谢你,这让我更进一步了。我更新了帖子,仍然有一个“无效列名”索引,我相信它是来自熊猫数据框架的索引。@Hendrik然后设置索引=False@Hendrik-根据mad的建议,我已经更新了答案。
df.to_sql('tbl_Interval', engine, schema='dbo', if_exists='append', index=False)