使用pymssq时python的trackback错误

2024-06-24 12:17:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用python2.5.2执行下面的代码。脚本正在建立连接并创建表,但随后由于以下错误而失败。在

剧本

import pymssql
conn = pymssql.connect(host='10.103.8.75', user='mo', password='the_password', database='SR_WF_MODEL')
cur = conn.cursor()
cur.execute('CREATE TABLE persons(id INT, name VARCHAR(100))')
cur.executemany("INSERT INTO persons VALUES(%d, %s)", \
    [ (1, 'John Doe'), (2, 'Jane Doe') ])
conn.commit()

cur.execute("SELECT * FROM persons WHERE salesrep='%s'", 'John Doe')
row = cur.fetchone()
while row:
    print "ID=%d, Name=%s" % (row[0], row[1])
    row = cur.fetchone()

cur.execute("SELECT * FROM persons WHERE salesrep LIKE 'J%'")

conn.close()

错误

^{pr2}$

有什么建议吗?另外,你怎么看回溯错误,有人能帮我理解错误信息吗?你怎么看的?自下而上?在


Tags: fromexecute错误passwordconnwherejohnselect
0条回答
网友
1楼 · 发布于 2024-06-24 12:17:20

我想您假设的是常规的python字符串插值行为,即:

>>> a = "we should never do '%s' when working with dbs"
>>> a % 'this'
"we should never do 'this' when working with dbs"

execute方法中的%运算符看起来像普通的字符串格式化运算符,但这更方便或更容易记忆;您的代码应为:

cur.execute("SELECT * FROM persons WHERE salesrep=%s", 'John Doe')

如果没有引号,这将使用像O'Reilly这样的名称,并有助于防止数据库适配器设计中的SQL注入。这就是将python对象转换为sql的数据库适配器;它将知道如何引用字符串和正确地转义标点符号等。如果您这样做,它将起作用:

^{pr2}$

但这是不好的做法。在

相关问题 更多 >