mysql 42s01_42000您的SQL语法有错误;请查看与您的MySQL s相对应的手册

我的Python odbc代码有问题。我无法使用以下代码:temp=process_query("SELECT FName, LName FROM Employee WHERE SSN='%s'" %i)

known_hours=process_query("SELECT DISTINCT Coalesce(Hours,0)

FROM Works_On WHERE ESSN='%s'" %i)

temp.append(known_hours)

其中process_query的形式为:

^{pr2}$

(process_query会继续一些,但这仅仅是为了打印目的,当我在web上搜索我的问题时,问题似乎在于我如何调用execute函数,因此我省略了函数的其余部分)。在

当我试图执行此程序时收到的错误是:pyodbc.ProgrammingError: ('42000', "[42000] [MySQL][ODBC 5.1 Driver][mysqld-5.1.66-0+squeeze1-log]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'John', [Decimal('32.5'), Decimal('7.5')], 'Yes']'' at line 1 (1064) (SQLExecDirectW)")

如果有人知道如何省略“十进制”当我打印,而只是有一个例子32.5,以及希望得到帮助。在

另外,我知道关于这个问题已经有好几个话题了,但是我还没有看到和理解select语句的问题。在

编辑

关于“我”的实施方式如下:

我有一个名为“列表”的初始列表,其中包含所有相关的社会保障号码,SSN,然后我像这样“循环”查看:for i in theList:

temp=process_query("SELECT FName, LName FROM Employee WHERE SSN='%s'" %i)

known_hours=process_query("SELECT DISTINCT SUM(Coalesce(Hours,0)) FROM Works_On WHERE ESSN='%s'" %i)

temp.append(known_hours)

unknown_hours=process_query("SELECT Distinct COUNT(*) FROM Works_On WHERE ISNULL(Hours) AND ESSN='%s'" %i)

temp.append(unknown_hours)

编辑

我已经按照比格尔的建议改了。然而,我现在遇到了另一个错误,那就是,由于我在列表中循环使用I(社会保障号码),我必须在之前定义这些号码。在

所以我用这条线theList=process_query('SELECT DISTINCT SSN FROM Employee', None)

我将流程查询更新为:def process_query(query, parameters):

if(parameters is None):

cursor1.execute(query)

else:

cursor1.execute(query, parameters) (*)

n=0

lista = []

while 1:

row = cursor1.fetchone()

if not row:

break

lista.append(row[0])

n = n+1

if n==0:

print "No tuples matching the given query were found."

return lista

现在的问题是程序在第二个cursor1.execute(用星号*标记)抱怨('SQL包含1个参数标记,但是提供了4个参数','HY000'),我相信这是因为我是一个社会安全数字,因此不是一个单位数整数,但我不知道如何解决这个问题。在

我现在叫我的as:temp=process_query('SELECT FName, LName FROM Employee WHERE SSN= ?', i)

known_hours=process_query('SELECT DISTINCT SUM(Coalesce(Hours,0)) FROM Works_On WHERE ESSN=?', i)

列表中的i在定义温度的循环之前标识,如下所示:theList=process_query('SELECT DISTINCT SSN FROM Employee', None)

它删除了所有其他的错误,但给了我一个新的,如前所述。另外,我试图将“I”转换为int(I)和map(int,I),而不从错误中获得释放。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值