【问题标题】:inserting data into mysql using python with external variables使用带有外部变量的python将数据插入mysql
【发布时间】:2015-08-06 17:10:57
【问题描述】:

我有一张表格,我需要在其中填充来自txt 文件的电子邮件地址、来自python 变量的日期和来源。在代码下方,a 是来自txtb 的变量,c 是我需要插入的python 变量

import csv,MySQLdb,os,os.path,datetime as dt
from sys import argv
path = argv
prompt = '>'
filename = raw_input(prompt)
fname = os.path.basename(filename)
source = fname
print "",source
date = dt.datetime.today().strftime("%d/%m/%y")
date_log = date
print "",date_log
db = MySQLdb.connect("localhost","root","passwd","testdb")
x = db.cursor()
csv_data  = csv.reader(file(filename))
for row in csv_data:
    print row
    query = (" INSERT INTO test(a,b,c) VALUES (%s,%s,%s)",row)
    x.execute(query, (date_log, source))
db.commit()
db.close()

这里出现如下错误:

File "csv2mysql.py", line 31, in <module>
    x.execute(query, (date_log, source))
  File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py",line159,in execute
    query = query % db.literal(args)
TypeError: unsupported operand type(s) for %: 'tuple' and 'tuple'

非常感谢任何帮助

【问题讨论】:

  • 查询不好...检查查询字符串...您的查询类似于 ('INSERT INTO test(a,b,c) VALUES (%s, %s, %s) ', (val1, val2,...))

标签: python mysql csv


【解决方案1】:

替换查询字符串

 query = (" INSERT INTO test(a,b,c) VALUES %s") %(row,)

 query = (" INSERT INTO test(a,b,c) VALUES %s") % str(row)

希望它对你有用...

【讨论】:

  • 嗨 Dhaval,我按照你的说法更改了查询,出现了这个错误,你能告诉我该怎么做 ['a_121withme@indiatimes.com'] 回溯(最近一次通话最后一次):文件“2csv2mysql .py”,第 27 行,在 x.execute(query, (date,fname)) 文件“/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py”,第 159 行,在执行中query = query % db.literal(args) TypeError: 在字符串格式化期间并非所有参数都被转换
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-03
  • 1970-01-01
相关资源
最近更新 更多