Code前端首页关于Code前端联系我们

关于在 python 中使用 mysql

terry 2年前 (2023-09-30) 阅读数 46 #Mysql
文章标签 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前端网发表,如需转载,请注明页面地址。

热门