【问题标题】:Uploading data from webscraper to SQL server将数据从 webscraper 上传到 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 变量属性一无所知。您必须将值作为查询参数发送。

标签: python mysql sql web-scraping pyodbc


【解决方案1】:

您将 python 变量 i 作为导致问题的字符串传递。 请尝试以下操作:

mycursor.execute ("""
                INSERT INTO DealSea
                VALUES
                ('"""+i.getTitle()+"""','"""+i.getLink()+"""','"""+i.getContent()+"""','"""+i.getVendor()+"""')""")

当您使用多行注释时,python 将变量 i 视为导致问题的字符串。

【讨论】:

    猜你喜欢
    • 2021-12-02
    • 1970-01-01
    • 2010-10-29
    • 1970-01-01
    • 1970-01-01
    • 2021-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多