Python AttributeError:' str'对象没有属性'光标'

时间:2018-01-15 09:36:07

标签: python

今天是我第三天学习Python,尽管有大量的网络搜索,我似乎无法解决这个问题。

代码接受命令行的输入并将其传递给连接脚本,然后连接。当我尝试将光标连接到行上的连接对象时出现问题: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)

1 个答案:

答案 0 :(得分:1)

这只是两个字符串的串联,所以一个字符串(括号不重要):

('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