python - 从 webscraper 上传数据到 SQL server
问题描述
我正在尝试将网络抓取的交易上传到 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)')
解决方案
您将 python 变量 i 作为导致问题的字符串传递。请尝试以下操作:
mycursor.execute ("""
INSERT INTO DealSea
VALUES
('"""+i.getTitle()+"""','"""+i.getLink()+"""','"""+i.getContent()+"""','"""+i.getVendor()+"""')""")
当您使用多行注释时,python 将变量 i 视为导致问题的字符串。
推荐阅读
- web-scraping - 循环遍历数据框中的超链接
- html - 如何以角度获取 mdb-tabset 中的活动选项卡?
- amazon-web-services - Amazon S3 cp 在复制过程中不断停止
- postgresql - clairctl 拒绝 tcp 连接
- python - 根据唯一值从现有数据框创建几个数据框
- maven - 为 GitLab CI 管道中的多个作业聚合 SonarQube Maven 分析
- php - 根据传入的请求 URL 参数修改 WP 网页上的 URL
- storybook - 故事书“未找到模块”
- typescript - 使用 Vite 发布 Vue 3 组件“库”的问题
- javascript - Webpack hmr 示例已过时