将数据从 webscraper 上传到 SQL server
Posted
技术标签:
【中文标题】将数据从 webscraper 上传到 SQL server【英文标题】:Uploading data from webscraper to SQL server 【发布时间】:2020-12-03 12:30:36 【问题描述】:我正在尝试将网络抓取的交易上传到 mysql 服务器:
def sendToSQL(deals, n):
length = len(deals)
if length < n:
print("Not enough deals",length,n)
return
server = 'zains.database.windows.net'
database = 'COSC'
username = 'zainy'
password = 'pw'
driver= 'ODBC Driver 17 for SQL Server'
mydb = pyodbc.connect('DRIVER='+driver+';PORT=1433;SERVER='+server+';PORT=1443;DATABASE='+database+';UID='+username+';PWD='+ password)
mycursor = mydb.cursor()
for i in deals[0:n]:
mycursor.execute("CREATE TABLE Dealsea(title text, link text, content text, vendor text)")
mycursor.execute ("""
INSERT INTO DealSea
VALUES
(i.getTitle(),i.getLink(),i.getContent(),i.getVendor())""")
mydb.commit()
给我这个错误:
pyodbc.ProgrammingError: ('42000', '[42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Cannot find either column "i" or the user-defined function or aggregate "i.getTitle", or the name is ambiguous. (4121) (SQLExecDirectW)')
【问题讨论】:
MySQL / MS SQL Server?错误消息清楚地表明 MS SQL Server。 SQL Server 对您的 python 程序、它的i
变量和 this 变量属性一无所知。您必须将值作为查询参数发送。
【参考方案1】:
您将 python 变量 i 作为导致问题的字符串传递。 请尝试以下操作:
mycursor.execute ("""
INSERT INTO DealSea
VALUES
('"""+i.getTitle()+"""','"""+i.getLink()+"""','"""+i.getContent()+"""','"""+i.getVendor()+"""')""")
当您使用多行注释时,python 将变量 i 视为导致问题的字符串。
【讨论】:
以上是关于将数据从 webscraper 上传到 SQL server的主要内容,如果未能解决你的问题,请参考以下文章
将数据从 sql server 增量上传到 Amazon Redshift [关闭]
如何使用 SQL 开发人员将任何文件从本地机器上传到数据库服务器文件系统
从C#中的数据中删除特殊字符后如何将dbf文件中的数百万行数据上传到SQL Server