今天是我第三天学习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)
答案 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。