繁体   English   中英

Python中CSV中的MySQL SELECT字段

[英]MySQL SELECT from field in CSV in Python

我目前在基于python脚本中的.csv文件中的行执行MySQL SELECT查询时遇到问题;

#!/usr/bin/env python

import MySQLdb, csv, sys

db = MySQLdb.connect(host="hostname",
                    user="user",
                    passwd="password",
                    db="database")


cur = db.cursor()

customers=csv.reader(file("customers.csv"))

for row in customers(row):
    cur.execute("select field from database.table where customernumber = %s;" % row)
    cur.commit()
    cur.close()

我得到这个;

    Traceback (most recent call last): 
    File "script.py", line 17, in <module>
    cur.execute("select field from database.table where field = %s;" % row)
    File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 174, in execute
    self.errorhandler(self, exc, value)
    File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 36, in        defaulterrorhandler
    raise errorclass, errorvalue
   _mysql_exceptions.ProgrammingError: (1064, "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  '['1598']' at line 1")

.csv文件中的第一行是1598。

由于某种原因,它使用'['1598']'括起该条目,因此mySQL查询失败,

有什么想法为什么要包住它以及如何阻止它吗?

提前致谢!

由于DPA原因,我已将所有mysql详细信息重命名为默认值

阿什利

首先,您需要修复csv阅读器逻辑。 然后,您需要将值作为参数传递给execute ,对连接(而不是游标commit() execute commit() ,最后-您要在循环本身中关闭连接。

import csv

with open('customers.csv') as f:
    reader = csv.reader(f)
    rows = list(reader)

for row in rows:
    cur.execute("select field from database.table where customernumber = %s;", (row[0],))
    con.commit()

con.close()

尝试这个,

对于客户中的行:打印行,行[0]

row [0]应该是第一列的值。

将执行SELECT更改为如下所示:

cur.execute("SELECT field FROM database.table WHERE customernumber = %s", (row[0],))

如果row [0]有该数字,则无论哪个索引都有它,如row [4]。

cur.execute("select field from database.table where customernumber = %s;" % row[0])

您需要传递row[0]而不是row row是一个列表, row[0]是该列表的第一个元素。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM