代码之家  ›  专栏  ›  技术社区  ›  martincito

正在尝试将SQL查询导入数据帧[重复]

  •  0
  • martincito  · 技术社区  · 6 年前

    今天是我学习python的第三天,尽管进行了大量的web搜索,但我似乎还是没能克服这个问题。

    代码接收命令行上的输入,并将其精细地传递给连接脚本,然后连接。当我试图将光标连接到行上的connect i on对象时,问题就出现了,该行显示: cor = con.cursor() 是的。我收到错误消息: AttributeError: 'str' object has no attribute 'cursor' .基本上,我所要做的就是接收连接字符串的参数,以便连接到数据库,然后能够运行查询。我请求任何人帮助我记住我是一个初学者,所以详细的答案将非常有帮助。提前谢谢。

    代码如下:

    import pyodbc
    import getpass
    import sys
    server_name = input('Enter Server Name: ')
    database_name = input('Enter Database Name: ')
    uid = input('Enter User ID: ')
    password = getpass.getpass("Enter your password: ")
    querystring = "select top 1 * from SomeTable"
    conStr = ('pyodbc.connect'+"('DRIVER={SQL Server};SERVER=%s;DATABASE=%s;UID=%s;PWD=%s')") % (server_name, database_name, uid, password)
    con = conStr
    cur = con.cursor()   #Generates error on this line
    cur.execute(querystring)
    rows = cur.fetchall()
    for row in rows:
        print(row)
    
    0 回复  |  直到 7 年前
        1
  •  1
  •   ilkkachu    7 年前

    这只是两个字符串的串联,因此一个字符串(括号无关紧要):

    ('pyodbc.connect'+"('blah')")
    

    以及 string % (value, value) 将左侧字符串作为printf样式的格式字符串,并在其中插入给定值。结果又是一个字符串,所以 conStr 只是一根绳子。一个看起来像python函数调用的字符串,但仍然是一个字符串。

    我想你只是想打个电话 pyodbc.connect() 以下内容:

    con = pyodbc.connect(
          'DRIVER={SQL Server};SERVER=%s;DATABASE=%s;UID=%s;PWD=%s' % 
          (server_name, database_name, uid, password))
    

    尽管我不确定它作为参数所期望的strint的语法。至少根据 this 看起来不错。