Python mysql数据牗executemany指定写入表报错,pythonexecutemany,curs.execute
Python mysql数据牗executemany指定写入表报错,pythonexecutemany,curs.execute
curs.executemany('insert into dbname values(%s, %s, %s, %s)', file_value)
sql语句如上,需要对dbname定义
我试了在参数那里加上表名的位置,失败:
file_value = [(tables,1,2,3,4)]curs.executemany('insert into %s values(%s, %s, %s, %s)', file_value)# 报错:not all arguments converted during string formatting
用++带入表名也不行:
curs.executemany('insert into '+tables+' values(%s, %s, %s, %s)', file_value)# 报错:(1136, "Column count doesn't match value count at row 1")
请问该如何处理?
自行用字符串替换吧,看了下手册excutemany似乎不是你这么用的啊,它的参数就是要INSERT进去的数据而已,不是纯粹的替换:http://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlcursor-executemany.html
sql='insert into %s values(%s)' % ("dbname ","%s, %s, %s, %s")
curs.executemany(sql, file_value)
楼主,刚敲了一下代码,executemany执行时最好对应个数。
#!/usr/bin/env python
# -- coding:utf-8 --
import loggingimport MySQLdbclass _MySQL(object): def __init__(self, host, port, user, passwd, db, charset='utf8'): self.conn = MySQLdb.connect( host = host, port = port, user = user, passwd = passwd, db = db, charset = charset) def get_cursor(self): return self.conn.cursor() def query(self, sql): cursor = self.get_cursor() try: cursor.execute(sql, None) result = cursor.fetchall() except Exception, e: logging.error("mysql query error: %s", e) return None finally: cursor.close() return result def execute(self, sql, param=None): cursor = self.get_cursor() try: cursor.execute(sql, param) self.conn.commit() affected_row = cursor.rowcount except Exception, e: logging.error("mysql execute error: %s", e) return 0 finally: cursor.close() return affected_row def executemany(self, sql, params=None): cursor = self.get_cursor() try: cursor.executemany(sql, params) self.conn.commit() affected_rows = cursor.rowcount except Exception, e: logging.error("mysql executemany error: %s", e) return 0 finally: cursor.close() return affected_rows def close(self): try: self.conn.close() except: pass def __del__(self): self.close()host = 'localhost'port = 3306user = 'root'passwd = '123456'db = 'foo'mysql = _MySQL(host, port, user, passwd, db)def create_table(): table = """ CREATE TABLE IF NOT EXISTS `watchdog`( `id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, `name` varchar(100), `price` int(11) NOT NULL DEFAULT 0 ) ENGINE=InnoDB charset=utf8; """ print mysql.execute(table)def insert_data(): params = [('dog_%d' % i, i) for i in xrange(12)] sql = "INSERT INTO `watchdog`(`name`,`price`) VALUES(%s,%s);" print mysql.executemany(sql, params) if __name__ == '__main__': create_table() insert_data()
编橙之家文章,
相关内容
- python3一当前函数调用另一个函数中的数据怎么实现,
- python import模块导入ImportError: No module named A路径应该没问
- 请问python 中cx_oracle使用where col in (:1)的方式的时候,是
- Flask Web开发实例3-10怎么样来实现?,flask3-10,Windows环境
- Python方法获得系统CPU频率及内存占用情况,python内存占
- Python七牛可以成功上传却不能正常访问文件如何解决,
- 使用python统计目标词在文件中出频度的实现方法,pyt
- Python中像__xxx__是做什么用的?,Python__xxx__,看一些源代码
- Python redis库连接池参数怎么用呢?,pythonredis,redis库的
- 有哪些给新手看的Python爬虫代码,新手python爬虫代码
评论关闭