我有pytrends这样的输出:
>>> from pytrends.request import TrendReq
>>> import pandas as pd
>>> import pyodbc as db
<...>
>>> pytrend.interest_over_time()
date Cat Dog Bat Rat Roo IsPartial
2017-05-28 61 1 27 23 24 False
2017-06-04 61 1 25 28 27 False
2017-06-11 64 2 23 22 22 False
2017-06-18 75 3 27 27 26 False
如何将这些数据插入到一个相同的mssql表中,如下所示?你知道吗
CREATE TABLE GoogleTrends (
[Date] DATE
,[Cat] TINYINT
,[Dog] TINYINT
,[Bat] TINYINT
,[Rat] TINYINT
,[Roo] TINYINT
,[IsPartial] BIT
)
采取的步骤:
>>> con = db.connect('DRIVER={ODBC Driver 13 for SQL Server};SERVER=ServerName;Trusted_Connection=yes;DATABASE=DBName')
>>> cur = con.cursor()
那应该是这样的
qry = '''INSERT INTO dbo.GoogleTrends
(Date, Cat, Dog, Bat, Rat, Roo, IsPartial)
VALUES(?, ?, ?, ?, ?, ?, ?)
'''
但我不太确定。不管怎样,使用
>>>cur.execute(qry, param_values)
错误结果:'SQL包含6个参数标记,但提供了1个参数,'HY000'如果我分配
param_values = pytrend.interest_over_time()
由于SQL Server的
to_sql
需要SQLAlchemy连接而不是原始连接,请考虑使用相同的准备好的SQL语句遍历dataframe行的游标方法:您不必使用SQLAlchemy,尽管它是一个选项。 如果你想使用pyodbc,你几乎已经做到了。你知道吗
注意,execute函数中的第二个参数也接受元组。 但是,请考虑另外两个注意事项: 1) 您需要自己在sqlserver中创建表;pyodbc不会为您创建表 2) 插入数据后,您需要额外的一行代码:
相关问题 更多 >
编程相关推荐