关于在 python 中使用 mysql
本文目录:
- 1.如何使用Python3 MySQL的executemany?
- 2.如何使用python连接mysql数据库
- 3.如何通过python使用mysql
- 4.如何使用Python3.4连接MySQL
如何使用Python3 MySQL的executemany?
您好!
根据你的代码,你的问题是没有理解executemany(sql, data)方法的逻辑。
第一个执行一个操作,需要输入的数据是硬编码在sql 字符串;
后者是批量进行输入操作。基本思想是,将格式化字符留在SQL参数中,并从数据中取出数据。这很难理解。让我们看一个例子:
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=[ [ 1,2,3],[4 ,5,6],[7,8,9]]
数据=[(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参数外层仍然是一个列表,内层元素是一个A字典,即字典代表要插入的数据:
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) :
附录(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 说明已同步序列嵌入方法。
======
希望对提问者有所帮助,欢迎提问

如何使用python连接mysql数据库
在Python语言环境下,我们是这样连接数据库的。
在[1]中:从mysql导入连接器
在[2]中:cnx = Connector.connect(host="172.16.192.100",port=3306,user="appuser",password="xxxxxx")
但是连接到数据库时幕后会发生什么?
回复
当我们通过驱动程序(mysql-connector-python、pymysql)连接MySQL服务器时,我们将连接参数传递给驱动程序,驱动程序根据参数向MySQL服务器发起TCP连接。当建立TCP连接时,驱动程序和服务器之间以特定的格式和顺序交换数据包。数据包的格式和发送顺序由MySQL协议决定。 MySQL协议:在整个连接过程中,这些数据包按以下顺序在MySQL服务器和驱动程序之间发送。
MySQL服务器向客户端发送握手包,握手包中存储了MySQL服务器的版本、默认的授权插件以及密码salt的值(auth-data)。
2。 MySQL客户端发出ssl连接请求数据包(如果需要)。
3。 MySQL客户端发送握手包的响应包。该包存储用户名、加密密码字符串、客户端属性和其他信息。
4。 MySQL服务器发送响应包。该包记录登录是否成功。如果没有,将显示错误消息。
如何通过python使用mysql
我使用的是由 MySQLdb 管理的 MYSQL 数据库。让我们从一个简单的例子开始:
import MySQLdb
try:
conn=MySQLdb.connect(host='localhost',user='root',passwd='root',db='test' , port=3306 )
cur=conn.cursor()
cur.execute('从用户中选择 *')
cur.close()
conn.close()
除了 MySQLdb 。 Error,e:
print "Mysql Error %d: %s" % (e.args[0], e.args[1])
请注意您的数据库、主机名、用户名、密码。
我们给出数据录入、批量录入和数据更新的简单示例:
import MySQLdb
try:
conn=MySQLdb.connect(host='localhost',''= ,passwd='root ', 端口=3306)
cur=conn.cursor()
cur.execute('如果缺少python则创建数据库')
conn.select_db('python')
cur.execute('创建表test(id int, info) varchar(20))')
value=[1,'滚动']
cur.execute('插入测试值(%s,%s)',value)
value=[]
for i in range (20):
values.append((i,'hi rollen'+str(i)))
cur.executemany('插入测试值(%s,%s) ) )' ,values)
cur.execute('更新测试集 info="I am rollen" where id=3')
conn.commit()
cur.close()
conn 。 close()
va MySQLdb.Error,e:
print "Mysql Error %d: %s" % (e.args[0], e.args[1])
注意一定要有be Conn.commit()用于提交事务,否则数据无法真正提交。
运行后,我的MySQL数据库的结果不再如图所示。
导入MySQLdb
尝试:
conn=MySQLdb.connect(host='localhost',user='root',passwd='root',port=3306)
光标(conn.)
conn.select_db('python')
count=cur.execute('select * test')
print '有 %s 行记录' % count
result=cur.fetchone()
打印结果
print 'ID: %s info %s' % 结果
results=cur.fetchmany(5)
for r in results:
print r
print '=='*10
cur.scroll(0,mode='absolute')
results=cur.fetchall()
for r in results:
print r[ 1]
conn.commit()
cur.close()
conn.close()
除了 MySQLdb.Error,e:
print "Mysql 错误 %d: %s" ( e.args[0], e.args[1])
我不会发布运行结果,因为它们太长了。
查询后,汉字显示正确,但在数据库中却出现乱码。在互联网上搜索,我发现这可以通过一个属性来完成:
在Python代码中
conn = MySQLdb.Connect(host='localhost', user='root', passwd='root' , db= ' python'), 添加属性:
更改为:
conn = MySQLdb.Connect(host='localhost', user='root', passwd='root', db='python' ,charset=' utf8')
字符集必须与您的数据库编码相同。如果数据库是gb2312,则输入charset='gb2312'。
常用的功能贴如下:
这个连接对象还支持事务操作。标准方法
commit() 提交
rollback() 回滚光标
。命令执行方法:
callproc(self, procname, args):用于执行存储过程。接收的参数是存储过程的名称和参数列表,返回值是受影响的行数
execute(self, query, args):执行单个 SQL 语句。返回的参数是 SQL 语句本身和使用的参数列表。返回值为受影响的行数
executemany(self, query, args):执行头显sql语句,但重复执行参数列表中的参数,返回值为受影响的行数
nextset(self ):移至下一个结果集
用于获取返回值的游标方法:
fetchall(self):接收返回结果的所有行。
fetchmany(self, size=None):获取size返回的结果行。如果size值大于返回结果的行数,则返回cursor.arraysize数据。
fetchone(self):返回结果所在行。
scroll(self, value, mode='relative'):将光标移动到特定行。如果mode='relative'表示从当前行值栏移动,如果mode='absolute'表示从结果集的第一行移动值栏。
参考:
MySQLdb用户指南
MySQLdb包
如何使用Python3.4连接MySQL
序列号 说明
1 去github下载pymysql安装包pymysql
2 解压到特定盘符
3 打开cmd窗口(winql环境),输入mysql root,运行python setup.py install
4 在pymysql中导入
5 开始连接数据库
数据库工作的API文档连接:
代码如下:
Python代码
__author__ = ' qindongliang'
#Pymysql包导入
import pymysql
try:
#获取数据库连接。注意,如果是UTF-8类型,必须指定数据库
conn=pymysql.connect(host='localhost',user='root',passwd='qin',db='person',port=3306,charset='utf8')
cur=conn.cursor() #获取光标
cur.execute('select * from person')
data=cur.fetchall()
for d in data :
#注意int类型必须使用str进行强制转换function
print("ID: "+str(d[0])+' 姓名: '+d[1]+" 性别: "+d[2])
cur.close()# 关闭光标
conn.close()#释放数据库资源
except Exception :print("发生异常")
结果为:
Java代码
D:\python .exe D:/ pythonide/ pythonprojectworkspace/python/mysql.py
ID:1 姓名:秦天 性别:男
ID:2 姓名:王静 性别:女
进程终止,退出代码 0 原文
补充说明:
mysqldb是python连接mysql数据库的工具,但是mysqldb目前支持的版本较低,安装失败。于是尝试了pymysql,比较简单好用
软件下载地址:
python3.2.5:
pymysql3.0.5:
mysql:(这里选择ph tudps方便安装)
1,Python安装目录设置为d:/python322。 pymysql的安装方法如下:将下载的文件解压,在cmd中运行:python setup.py install。
检查安装是否成功的方法:导入pymysql。如果没有报错则说明安装成功。
3。 MySQL的安装目录为D:/phpStudy/MySQL。为了避免重大配置问题,您可以在运行 phpstudy
4 后将其设置为系统服务。基本操作:
(1)pymysql导入:pymysql import
(2)连接数据库:conn=pymysql.connect(host='localhost',user='root',passwd='root',db='ere',charset='utf8') 一定要注意每个等号之前的内容!字符集参数可以避免汉字乱码
(3) 获取操作光标:cur=conn.cursor()
(4) 执行sql语句,插入记录:sta=cur.execute(" insert语句”)执行成功后sta值为1。update和delete语句与此类似。
(5) 运行sql语句,查询记录:cur.execute("select statements")。执行成功后,将查询结果的记录集存入cur变量中,然后循环打印结果:
iga in cur:
print(each[1].decode('utf -8) ')) #each[1]代表当前光标所在行的第二列值。如果是中文,需要处理编码
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网
