Python3 MySQL executemany的使用?
题主你好,
从你的代码来说, 你的问题出在对executemany(sql, data)这个方法的逻辑没弄明白.
咱们对比一下execute(sql)和executemany(sql, data), 这里假设sql执行的是插入操作:
前者是执行单条操作,要插入的数据是写死在sql这个字符串中的;
后者是批量执行插入操作.关键的地方在于sql参数中留出格式化字符, 而数据是从data中取,这么说不好理解,看例子吧:
sql改为:
sql = "INSERT INTO bbb(nu1, nu2, nu3) VALUES (%s, %s, %s)"
注意和你的对比一下:
sql = "INSERT INTO bbb(nu1, nu2, nu3) VALUES (%s, %s, %s)" % (aa,bb,cc)
-----
关键是data参数,有两种写法,一种是序列内嵌, 一种是字典:
序列内嵌(外层必须是列表, 内层元素是列表或元组)
data=[[1,2,3],[4,5,6],[7,8,9]]
data=[(1,2,3),(4,5,6),(7,8,9)]
字典:
使用字典时,sql也要相应的改一下:
sql = "INSERT INTO bbb(nu1, nu2, nu3) VALUES (%(nu1)s, %(nu2)s, %(nu3)s)"
data参数外层还是一个列表, 内层元素是一个个的字典,即一个字典表示一条将要被插入的数据:
data = [ { 'nu1':1, 'nu2':2, 'nu3':3 }, { 'nu1':1, 'nu2':2, 'nu3':3 } ]
-----
再说下最终的逻辑:
序列内嵌法:
1.可以使用for循环先得到一个外层是列表,内层元素是列表或元组的这的一个列表:
ll= []
for i in itertools.permutations(range(1,8),3):
ll.append(i)
2.然后再构建sql语句:
sql = "INSERT INTO bbb(nu1, nu2, nu3) VALUES (%s, %s, %s)"
3.调用executemany():
cursor.executemany(sql,ll)
4.最后调用commit(),提交给数据库执行:
yydd.commit()
-----
字典法的逻辑:
1.使用for循环构建一个元素是字典的列表:
ll= []
for i in itertools.permutations(range(1,8),3):
ll.append({'nu1':i[0], 'nu2':i[1], 'nu3':i[2]})
2.构建sql语句:
sql = "INSERT INTO bbb(nu1, nu2, nu3) VALUES (%(nu1)s, %(nu2)s, %(nu3)s)"
3,4步同序列内嵌法中的描述.
=====
希望可以帮到题主, 欢迎追问
濮昭彼赛: python3发布以来,获取了广大程序员们的差评,说不稳定,又是不兼容什么的,不过差评归差评,python3既然已经发布,肯定是个趋势,但在python3.4里面,使用原来python2.7的mysqldb已经不能连接mysql数据库了,比较令人纠...
奉节县17884556691: python3 怎么连接数据库 - ?
濮昭彼赛: Python是计算机常用的计算机语言,在实际的操作中我们会涉及到Python连接数据库的相关实际操作,假如你对Python连接数据库的实际操作方案感兴趣或是有疑问,你都可以浏览下面的文章.一. Python和mysql数据库连接Python 要连接 ...
奉节县17884556691: python3怎么在windows当中安装mysql - ?
濮昭彼赛: 1、安装mysql 首先到mysql官网下载文件:mysql-installer-community.msi 安装过程同一般exe文件,直接下一步即可;2、安装MySQL-python 直接根据web.py给出 的链接,下载文件MySQL-python.tar.gz 解压到任意目录 然后在cmd命令行行下进行安装;C:\...> python setup.py install C:\...> python setup.py bdist_wininst
奉节县17884556691: python3 怎么读取mysql配置文件 - ?
濮昭彼赛: 记录一个读取my.cnf配置的脚本,可以基于该函数做一些mysql 后端运维工作.各位可以基于自己的需求进行修改. 脚本名称 getcnf.py import sysimport osdef read_cnf(cnf_path): assert cnf_path is not None and os.path.exists(cnf_path) cnf_...
奉节县17884556691: python3怎么安装msql驱动?
濮昭彼赛: pip install mysql-connector-python --allow-external mysql-connector-python 或者是: pip install mysql-connector 以上两行都可以安装 mysql 驱动,然后 import mysql.connector 就可以了链接 mysql 了,或者再安转一个 SQLAlechemy 等 ORM 库,简化数据库操作.
奉节县17884556691: 在python3下怎样用flask - sqlalchemy对mysql数据库操作 - ?
濮昭彼赛: python3下用flask-sqlalchemy对mysql数据库操作案例: from flask import Flask from flask.ext.sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://username:password@localhost/db_...
奉节县17884556691: 如何python 读取mysql数据 csdn - ?
濮昭彼赛: 1、和数据库建立连接 2、执行sql语句,接收返回值 3、关闭数据库连接 1、MySQL数据库要用MySQLdb模块,但Python用来链接MySQL的第三方库MySQLdb不支持Python3.x 特别说明:我在我的电脑上实验时,我的python是2.7.2版本,安装对应版本的MySQLdb之...
奉节县17884556691: MySQL数据库和Python怎么结合? - ?
濮昭彼赛: 数据库与python的结合PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb.1、在python中连接数据库先在terminal中进入mysql,用命令建立FATE库# MariaDB [(none)]> CREATE DATABASE FATE; ...
奉节县17884556691: 在python3下怎样用flask - sqlalchemy对mysql数据库操作 - ?
濮昭彼赛: db.session.execute("select xxx",bind=db.get_engine(current_app,bind="sqlite_test")).fetchall() 如果您对我的回答有不满意的地方,还请您继续追问;答题不易,互相理解,互相帮助!
奉节县17884556691: python获取mysql返回内容 - ?
濮昭彼赛: import MySQLdb con = MySQLdb.connect(host='xxx.xxx.xxx.xxx',port=3306, user='root',passwd='123456') cursor = con.cursor() sql = "SELECT version()" cursor.execute(sql) record = cursor.fetchone() print record[0] con.close()