【IT专家】Python操作MySQL案例

合集下载

使用python操作mysql数据库

使用python操作mysql数据库

使⽤python操作mysql数据库前⾔:以下内容主要介绍python使⽤pymysql 操作mysql的查询和插⼊、使⽤的编译⼯具为pycharm (pymysql属于第三⽅库、需要我们⾃⼰安装)我要操作的数据库表(表名为student)如下、其中sno是⾃增:⼀、查询该表的数据:import pymysql #导库#1-打开数据库连接前提是⾃⼰本地的mysql服务是打开的db=pymysql.connect(host="localhost",user="root",password="123456",db="yhrtest",port=3306)cursor=db.cursor() #2-使⽤cursor()⽅法获取操作游标sql="select * from student"#3-添加查询语句try:cursor.execute(sql) #4-执⾏sql语句result=cursor.fetchall() #5-获取查询的结果结果为元组类型print("sno","sname","age","sdept") #先输出表头字段for one in result:sno,sname,age,sdept=oneprint(sno,sname,age,sdept)except Exception as error:print("错误提⽰:",error) #打印错误信息finally:db.close() #6-关闭连接查询结果如下:⼆、插⼊⼀条数据:import pymysql #导库#1-打开数据库连接前提是⾃⼰本地的mysql服务是打开的db=pymysql.connect(host="localhost",user="root",password="123456",db="yhrtest",port=3306)cursor=db.cursor() #2-新建游标sql='insert into student(sname,age,sdept) values("测试","21","测试")'#3-编写sql语句try:cursor.execute(sql) #4-执⾏sql语句mit() #5-记得提交、否则不⽣效except Exception as error:print(error) #查看报错信息db.rollback() #执⾏中如果报错则回滚finally:db.close() #6-关闭数据库最终执⾏结果:总结:以上只写了查询和插⼊语句、因为修改以及删除语句的操作步骤跟插⼊的是类似的、直接替换sql语句就可以了。

Python操作MySQL的9个实用实例

Python操作MySQL的9个实用实例

Python操作MySQL的9个实用实例
实例 1、取得 MYSQL 的版本
取得 MYSQL 的版本
实例 2、创建一个表并且插入数据
创建一个表并且插入数据
实例 3、 python 使用 slect 获取 mysql 的数据并遍历
使用 slect 获取 mysql 的数据并遍历
上面的代码,用来将所有的结果取出,不过打印的时候是每行一个元祖打印,现在我们使用方法,取出其中的单个数据:
取出其中的单个数据
实例 4、使用字典 cursor 取得结果集(可以使用表字段名字访问值)
使用字典 cursor 取得结果集
实例 5、获取单个表的字段名和信息的方法
获取单个表的字段名和信息的方法
实例 6、使用 Prepared statements 执行查询(更安全方便)使用 Prepared statements 执行查询
实例 7、把图片用二进制存入 MYSQL
首先,在数据库中创建一个表,用于存放图片
数据库中创建一个表
把图片用二进制存入 MYSQL
实例 8、从数据库中把图片读出来
从数据库中把图片读出来
实例 9、使用 Transaction 即事务(手动提交,自动回滚)
使用 Transaction 即事务
本文为头条号作者发布,不代表今日头条立场。

Python中使用pymysql库连接和操作MySQL数据库

Python中使用pymysql库连接和操作MySQL数据库

Python中使用pymysql库连接和操作MySQL数据库Python语言在数据处理和分析方面具有广泛的应用,而MySQL数据库则是许多项目中常用的数据存储工具之一。

在Python中,我们可以使用pymysql库来连接和操作MySQL数据库,它是一个基于Python的库,用于连接和操作MySQL服务器。

本文将介绍如何使用pymysql库在Python中连接和操作MySQL数据库。

1. 安装pymysql库在使用pymysql库之前,我们需要先安装它。

可以使用pip命令来安装pymysql库:```pip install pymysql```安装完成后,我们可以在Python脚本中导入pymysql库,并开始连接和操作MySQL数据库。

2. 连接MySQL数据库在使用pymysql库连接MySQL数据库之前,我们需要先准备好数据库的连接信息,包括主机名、用户名、密码和数据库名。

以下是一个连接MySQL数据库的示例代码:```pythonimport pymysql# 连接数据库conn = pymysql.connect(host='localhost', # 主机名user='root', # 用户名password='password', # 密码database='test' # 数据库名)# 创建游标对象cursor = conn.cursor()# 执行SQL查询cursor.execute('SELECT * FROM users') # 获取查询结果result = cursor.fetchall()# 输出查询结果for row in result:print(row)# 关闭游标和连接cursor.close()conn.close()```在示例代码中,首先使用pymysql库的connect方法连接数据库,其中传入的参数分别为主机名、用户名、密码和数据库名。

pymysql 案例

pymysql 案例

pymysql 案例pymysql 是一个在 Python 中操作 MySQL 数据库的库。

它提供了一种简单而强大的方式来连接和执行 SQL 语句,使开发者能够更轻松地与数据库进行交互。

下面列举了十个使用 pymysql 的案例。

1. 连接数据库在使用pymysql 之前,首先需要建立与数据库的连接。

可以使用pymysql.connect() 函数来创建与数据库的连接。

如下所示:```import pymysql# 建立数据库连接conn = pymysql.connect(host='localhost', port=3306, user='root', password='123456', db='test')```其中,host 是数据库服务器地址,port 是端口号,user 和password 是登录数据库的用户名和密码,db 是要连接的数据库名称。

2. 创建数据表使用pymysql 创建数据表的方法是执行SQL 语句。

可以使用pymysql 的 cursor() 函数来获取游标对象,然后使用 execute() 方法执行 SQL 语句。

如下所示:```# 获取游标对象cursor = conn.cursor()# 执行创建表的 SQL 语句sql = '''CREATE TABLE IF NOT EXISTS students (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50),age INT,gender VARCHAR(10))'''cursor.execute(sql)```上述代码创建了一个名为students 的数据表,包含id、name、age 和 gender 四个字段。

3. 插入数据要向数据表中插入数据,可以使用 pymysql 的 execute() 方法执行插入语句。

Python操作MySQL数据库9个实用实例

Python操作MySQL数据库9个实用实例

Python操作MySQL数据库9个实⽤实例在Windows平台上安装mysql模块⽤于Python开发⽤python连接mysql的时候,需要⽤的安装版本,源码版本容易有错误提⽰。

下边是打包了32与64版本。

MySQL-python-1.2.3.win32-py2.7.exe MySQL-python-1.2.3.win-amd64-py2.7.exe实例 1、取得 MYSQL 的版本# -*- coding: UTF-8 -*-#安装 MYSQL DB for pythonimport MySQLdb as mdbcon = Nonetry:#连接 mysql 的⽅法: connect('ip','user','password','dbname')con = mdb.connect('localhost', 'root','root', 'test');#所有的查询,都在连接 con 的⼀个模块 cursor 上⾯运⾏的cur = con.cursor()#执⾏⼀个查询cur.execute("SELECT VERSION()")#取得上个查询的结果,是单个结果data = cur.fetchone()print "Database version : %s " % datafinally:if con:#⽆论如何,连接记得关闭con.close()实例 2、创建⼀个表并且插⼊数据import MySQLdb as mdbimport sys#将 con 设定为全局连接con = mdb.connect('localhost', 'root', 'root', 'test');with con:#获取连接的 cursor,只有获取了 cursor,我们才能进⾏各种操作cur = con.cursor()#创建⼀个数据表 writers(id,name)cur.execute("CREATE TABLE IF NOT EXISTS \Writers(Id INT PRIMARY KEY AUTO_INCREMENT, Name VARCHAR(25))")#以下插⼊了 5 条数据cur.execute("INSERT INTO Writers(Name) VALUES('Jack London')")cur.execute("INSERT INTO Writers(Name) VALUES('Honore de Balzac')")cur.execute("INSERT INTO Writers(Name) VALUES('Lion Feuchtwanger')")cur.execute("INSERT INTO Writers(Name) VALUES('Emile Zola')")cur.execute("INSERT INTO Writers(Name) VALUES('Truman Capote')")实例 3、 python 使⽤ slect 获取 mysql 的数据并遍历import MySQLdb as mdbimport sys#连接 mysql,获取连接的对象con = mdb.connect('localhost', 'root', 'root', 'test');with con:#仍然是,第⼀步要获取连接的 cursor 对象,⽤于执⾏查询cur = con.cursor()#类似于其他语⾔的 query 函数, execute 是 python 中的执⾏查询函数cur.execute("SELECT * FROM Writers")#使⽤ fetchall 函数,将结果集(多维元组)存⼊ rows ⾥⾯rows = cur.fetchall()#依次遍历结果集,发现每个元素,就是表中的⼀条记录,⽤⼀个元组来显⽰for row in rows:print row运⾏结果:(1L, ‘Jack London')(2L, ‘Honore de Balzac')(3L, ‘Lion Feuchtwanger')(4L, ‘Emile Zola')(5L, ‘Truman Capote')上⾯的代码,⽤来将所有的结果取出,不过打印的时候是每⾏⼀个元祖打印,现在我们使⽤⽅法,取出其中的单个数据:import MySQLdb as mdbimport sys#获取 mysql 的链接对象con = mdb.connect('localhost', 'root', 'root', 'test');with con:#获取执⾏查询的对象cur = con.cursor()#执⾏那个查询,这⾥⽤的是 select 语句cur.execute("SELECT * FROM Writers")#使⽤ cur.rowcount 获取结果集的条数numrows = int(cur.rowcount)#循环 numrows 次,每次取出⼀⾏数据for i in range(numrows):#每次取出⼀⾏,放到 row 中,这是⼀个元组(id,name)row = cur.fetchone()#直接输出两个元素print row[0], row[1]运⾏结果:1 Jack London2 Honore de Balzac3 Lion Feuchtwanger4 Emile Zola5 Truman Capote实例 4、使⽤字典 cursor 取得结果集(可以使⽤表字段名字访问值)import MySQLdb as mdbimport sys#获得 mysql 查询的链接对象con = mdb.connect('localhost', 'root', 'root', 'test')with con:#获取连接上的字典 cursor,注意获取的⽅法,#每⼀个 cursor 其实都是 cursor 的⼦类cur = con.cursor(mdb.cursors.DictCursor)#执⾏语句不变cur.execute("SELECT * FROM Writers")#获取数据⽅法不变rows = cur.fetchall()#遍历数据也不变(⽐上⼀个更直接⼀点)for row in rows:#这⾥,可以使⽤键值对的⽅法,由键名字来获取数据print "%s %s" % (row["Id"], row["Name"])实例 5、获取单个表的字段名和信息的⽅法import MySQLdb as mdbimport sys#获取数据库的链接对象con = mdb.connect('localhost', 'root', 'root', 'test')with con:#获取普通的查询 cursorcur = con.cursor()cur.execute("SELECT * FROM Writers")rows = cur.fetchall()#获取连接对象的描述信息desc = cur.descriptionprint 'cur.description:',desc#打印表头,就是字段名字print "%s %3s" % (desc[0][0], desc[1][0])for row in rows:#打印结果print "%2s %3s" % row运⾏结果:cur.description: ((‘Id', 3, 1, 11, 11, 0, 0), (‘Name', 253, 17, 25, 25, 0, 1))Id Name1 Jack London2 Honore de Balzac3 Lion Feuchtwanger4 Emile Zola5 Truman Capote实例 6、使⽤ Prepared statements 执⾏查询(更安全⽅便)import MySQLdb as mdbimport syscon = mdb.connect('localhost', 'root', 'root', 'test')with con:cur = con.cursor()#我们看到,这⾥可以通过写⼀个可以组装的 sql 语句来进⾏cur.execute("UPDATE Writers SET Name = %s WHERE Id = %s",("Guy de Maupasant", "4"))#使⽤ cur.rowcount 获取影响了多少⾏print "Number of rows updated: %d" % cur.rowcount结果:Number of rows updated: 1实例 7、把图⽚⽤⼆进制存⼊ MYSQL有⼈喜欢把图⽚存⼊ MYSQL(这种做法貌似很少吧),我看⼤部分的程序,图⽚都是存放在服务器上的⽂件,数据库中存的只是图⽚的地址⽽已,不过 MYSQL 是⽀持把图⽚存⼊数据库的,也相应的有⼀个专门的字段 BLOB (Binary Large Object),即较⼤的⼆进制对象字段,请看如下程序,注意测试图⽚⾃⼰随便找⼀个,地址要正确:⾸先,在数据库中创建⼀个表,⽤于存放图⽚:复制代码代码如下:CREATE TABLE Images(Id INT PRIMARY KEY AUTO_INCREMENT, Data MEDIUMBLOB);然后运⾏如下 PYTHON 代码进⾏:import MySQLdb as mdbimport systry:#⽤读⽂件模式打开图⽚fin = open("../web.jpg")#将⽂本读⼊ img 对象中img = fin.read()#关闭⽂件fin.close()except IOError, e:#如果出错,打印错误信息print "Error %d: %s" % (e.args[0],e.args[1])sys.exit(1)try:#链接 mysql,获取对象conn = mdb.connect(host='localhost',user='root',passwd='root',db='test')#获取执⾏ cursorcursor = conn.cursor()#直接将数据作为字符串,插⼊数据库cursor.execute("INSERT INTO Images SET Data='%s'" %mdb.escape_string(img))#提交数据mit()#提交之后,再关闭 cursor 和链接cursor.close()conn.close()except mdb.Error, e:#若出现异常,打印信息print "Error %d: %s" % (e.args[0],e.args[1])sys.exit(1)实例 8、从数据库中把图⽚读出来import MySQLdb as mdbimport systry:#连接 mysql,获取连接的对象conn = mdb.connect('localhost', 'root', 'root', 'test');cursor = conn.cursor()#执⾏查询该图⽚字段的 SQLcursor.execute("SELECT Data FROM Images LIMIT 1")#使⽤⼆进制写⽂件的⽅法,打开⼀个图⽚⽂件,若不存在则⾃动创建fout = open('image.png','wb')#直接将数据如⽂件fout.write(cursor.fetchone()[0])#关闭写⼊的⽂件fout.close()#释放查询数据的资源cursor.close()conn.close()except IOError, e:#捕获 IO 的异常,主要是⽂件写⼊会发⽣错误print "Error %d: %s" % (e.args[0],e.args[1])sys.exit(1)实例 9、使⽤ Transaction 即事务(⼿动提交,⾃动回滚)import MySQLdb as mdbimport systry:#连接 mysql,获取连接的对象conn = mdb.connect('localhost', 'root', 'root', 'test');cursor = conn.cursor()#如果某个数据库⽀持事务,会⾃动开启#这⾥⽤的是 MYSQL,所以会⾃动开启事务(若是 MYISM 引擎则不会)cursor.execute("UPDATE Writers SET Name = %s WHERE Id = %s",("Leo Tolstoy", "1"))cursor.execute("UPDATE Writers SET Name = %s WHERE Id = %s",("Boris Pasternak", "2"))cursor.execute("UPDATE Writer SET Name = %s WHERE Id = %s",("Leonid Leonov", "3"))#事务的特性 1、原⼦性的⼿动提交mit()cursor.close()conn.close()except mdb.Error, e:#如果出现了错误,那么可以回滚,就是上⾯的三条语句要么执⾏,要么都不执⾏conn.rollback()print "Error %d: %s" % (e.args[0],e.args[1])结果:1、因为不存在 writer 表( SQL 第三条语句),所以出现错误:Error 1146: Table ‘test.writer' doesn't exist2、出现错误,出发异常处理, 3 条语句的前两条会⾃动变成了没有执⾏,结果不变3、如果本代码放到⼀个 MyISAM 引擎表,前两句会执⾏,第三句不会;如果是 INNDB 引擎,则都不会执⾏。

python中操作mysql简单实例

python中操作mysql简单实例

python中操作mysql简单实例安装pymysql库在CMD终端中安装:pip install pymysql也可以在PyCharm⾥安装。

连接数据库注意事项:有⼀个MySQL数据库,并且已经启动;拥有可以连接数据库的⽤户名和密码;有⼀个有权限操作的database基本使⽤:# 导⼊pymysql模块import pymysql# 连接databaseconn = pymysql.connect(host=“你的数据库地址”,port=端⼝号user=“⽤户名”,password=“密码”,database=“数据库名”,charset=“utf8”)# 得到⼀个可以执⾏SQL语句的光标对象cursor = conn.cursor()# 定义要执⾏的SQL语句sql = """CREATE TABLE USER1 (id INT auto_increment PRIMARY KEY ,name CHAR(10) NOT NULL UNIQUE,age TINYINT NOT NULL)ENGINE=innodb DEFAULT CHARSET=utf8;"""# 执⾏SQL语句cursor.execute(sql)# 关闭光标对象cursor.close()# 关闭数据库连接conn.close()返回字典格式数据:# 导⼊pymysql模块import pymysql# 连接databaseconn = pymysql.connect(host=“你的数据库地址”, port=端⼝号user=“⽤户名”,password=“密码”,database=“数据库名”,charset=“utf8”)# 得到⼀个可以执⾏SQL语句并且将结果作为字典返回的游标cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)# 定义要执⾏的SQL语句sql = """CREATE TABLE USER1 (id INT auto_increment PRIMARY KEY ,name CHAR(10) NOT NULL UNIQUE,age TINYINT NOT NULL)ENGINE=innodb DEFAULT CHARSET=utf8;"""# 执⾏SQL语句cursor.execute(sql)# 关闭光标对象cursor.close()# 关闭数据库连接conn.close()注意事项:⼀定要注意连接 database 的时候,书写格式,⽐如端⼝号是数字型的,密码是字符串型的,charset="utf8" 不是“utf-8”。

PythonMySQLdb模块连接操作mysql数据库实例_python

PythonMySQLdb模块连接操作mysql数据库实例_python

PythonMySQLdb模块连接操作mysql数据库实例_python mysql是⼀个优秀的开源数据库,它现在的应⽤⾮常的⼴泛,因此很有必要简单的介绍⼀下⽤python操作mysql数据库的⽅法。

python操作数据库需要安装⼀个第三⽅的模块,在/有下载和。

由于python的数据库模块有专门的数据库模块的规范,所以,其实不管使⽤哪种数据库的⽅法都⼤同⼩异的,这⾥就给出⼀段⽰范的代码:#-*- encoding: gb2312 -*-import os, sys, stringimport MySQLdb# 连接数据库 try:conn = MySQLdb.connect(host='localhost',user='root',passwd='xxxx',db='test1')except Exception, e:print esys.exit()# 获取cursor对象来进⾏操作cursor = conn.cursor()# 创建表sql = "create table if not exists test1(name varchar(128) primary key, age int(4))"cursor.execute(sql)# 插⼊数据sql = "insert into test1(name, age) values ('%s', %d)" % ("zhaowei", 23)try:cursor.execute(sql)except Exception, e:print esql = "insert into test1(name, age) values ('%s', %d)" % ("张三", 21)try:cursor.execute(sql)except Exception, e:print e# 插⼊多条sql = "insert into test1(name, age) values (%s, %s)"val = (("李四", 24), ("王五", 25), ("洪六", 26))try:cursor.executemany(sql, val)except Exception, e:print e#查询出数据sql = "select * from test1"cursor.execute(sql)alldata = cursor.fetchall()# 如果有数据返回,就循环输出, alldata是有个⼆维的if alldata:for rec in alldata:print rec[0], rec[1]cursor.close()conn.close()以上是云栖社区⼩编为您精⼼准备的的内容,在云栖社区的博客、问答、公众号、⼈物、课程等栏⽬也有的相关内容,欢迎继续使⽤右上⾓搜索按钮进⾏搜索python MySQLdb模块 mysqldb mysql python、mysql数据库设计实例、mysql数据库实例、mysql数据库开发实例、mysql数据库实例下载,以便于您获取更多的相关知识。

python操作MySQL数据库

python操作MySQL数据库

python操作MySQL数据库坚持每天学一点,每天积累一点点,作为自己每天的业余收获,这个文章是我在吃饭的期间写的,利用自己零散的时间学了一下python操作MYSQL,所以整理一下。

我采用的是MySQLdb操作的MYSQL数据库。

先来一个简单的例子吧:?1 2 3 4 5 6 7 8 9 1 0 import MySQLdbtry:conn=MySQLdb.connect(host='localhost',user='root',passwd='root',db= 'test',port=3306)cur=conn.cursor()cur.execute('select * from user')cur.close()conn.close()except MySQLdb.Error,e:print"Mysql Error %d: %s"%(e.args[0], e.args[1])请注意修改你的数据库,主机名,用户名,密码。

下面来大致演示一下插入数据,批量插入数据,更新数据的例子吧:?1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1import MySQLdbtry:conn=MySQLdb.connect(host='localhost',user='root',passwd='root',por t=3306)cur=conn.cursor()cur.execute('create database if not exists python')conn.select_db('python')cur.execute('create table test(id int,info varchar(20))')value=[1,'hi rollen']cur.execute('insert into test values(%s,%s)',value)values=[]for i in range(20):values.append((i,'hi rollen'+str(i)))cur.executemany('insert into test values(%s,%s)',values)cur.execute('update test set info="I am rollen" where id=3') mit()3 14 15 16 17 18 19 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 cur.close()conn.close()except MySQLdb.Error,e:print"Mysql Error %d: %s"%(e.args[0], e.args[1])请注意一定要有mit()这句来提交事务,要不然不能真正的插入数据。

Python3多线程(连接池)操作MySQL插入数据

Python3多线程(连接池)操作MySQL插入数据

Python3多线程(连接池)操作MySQL插⼊数据⽬录多线程(连接池)操作MySQL插⼊数据1.主要模块2.创建连接池3.数据预处理4.线程任务5.启动多线程6.完整⽰例7.思考/总结多线程(连接池)操作MySQL插⼊数据针对于此篇博客的收获⼼得:⾸先是可以构建连接数据库的连接池,这样可以多开启连接,同⼀时间连接不同的数据表进⾏查询,插⼊,为多线程进⾏操作数据库打基础多线程根据多连接的⽅式,需求中要完成多语⾔的⼊库操作,我们可以启⽤多线程对不同语⾔数据进⾏并⾏操作在插⼊过程中,⼀条⼀插⼊,⽐较浪费时间,我们可以把数据进⾏积累,积累到⼀定的条数的时候,执⾏⼀条sql命令,⼀次性将多条数据插⼊到数据库中,节省时间cur.executemany1.主要模块DBUtils : 允许在多线程应⽤和数据库之间连接的模块套件Threading : 提供多线程功能2.创建连接池PooledDB 基本参数:mincached : 最少的空闲连接数,如果空闲连接数⼩于这个数,Pool⾃动创建新连接;maxcached : 最⼤的空闲连接数,如果空闲连接数⼤于这个数,Pool则关闭空闲连接;maxconnections : 最⼤的连接数;blocking : 当连接数达到最⼤的连接数时,在请求连接的时候,如果这个值是True,请求连接的程序会⼀直等待,直到当前连接数⼩于最⼤连接数,如果这个值是False,会报错;def mysql_connection():maxconnections = 15 # 最⼤连接数pool = PooledDB(pymysql,maxconnections,host='localhost',user='root',port=3306,passwd='123456',db='test_DB',use_unicode=True)return pool# 使⽤⽅式pool = mysql_connection()con = pool.connection()3.数据预处理⽂件格式:txt共准备了四份虚拟数据以便测试,分别有10万, 50万, 100万, 500万⾏数据MySQL表结构如下图:数据处理思路 :每⼀⾏⼀条记录,每个字段间⽤制表符 “\t” 间隔开,字段带有双引号;读取出来的数据类型是 Bytes ;最终得到嵌套列表的格式,⽤于多线程循环每个任务每次处理10万⾏数据;格式 : [ [(A,B,C,D), (A,B,C,D),(A,B,C,D),…], [(A,B,C,D), (A,B,C,D),(A,B,C,D),…], [], … ]import reimport timest = time.time()with open("10w.txt", "rb") as f:data = []for line in f:line = re.sub("\s", "", str(line, encoding="utf-8"))line = tuple(line[1:-1].split("\"\""))data.append(line)n = 100000 # 按每10万⾏数据为最⼩单位拆分成嵌套列表result = [data[i:i + n] for i in range(0, len(data), n)]print("10万⾏数据,耗时:{}".format(round(time.time() - st, 3)))# 10万⾏数据,耗时:0.374# 50万⾏数据,耗时:1.848# 100万⾏数据,耗时:3.725# 500万⾏数据,耗时:18.4934.线程任务每调⽤⼀次插⼊函数就从连接池中取出⼀个链接操作,完成后关闭链接;executemany 批量操作,减少 commit 次数,提升效率;def mysql_insert(*args):con = pool.connection()cur = con.cursor()sql = "INSERT INTO test(sku,fnsku,asin,shopid) VALUES(%s, %s, %s, %s)"try:cur.executemany(sql, *args)mit()except Exception as e:con.rollback() # 事务回滚print('SQL执⾏有误,原因:', e)finally:cur.close()con.close()5.启动多线程代码思路 :设定最⼤队列数,该值必须要⼩于连接池的最⼤连接数,否则创建线程任务所需要的连接⽆法满⾜,会报错 :pymysql.err.OperationalError: (1040, ‘Too many connections')循环预处理好的列表数据,添加队列任务如果达到队列最⼤值或者当前任务是最后⼀个,就开始多线程队执⾏队列⾥的任务,直到队列为空;def task():q = Queue(maxsize=10) # 设定最⼤队列数和线程数# data : 预处理好的数据(嵌套列表)while data:content = data.pop()t = threading.Thread(target=mysql_insert, args=(content,))q.put(t)if (q.full() == True) or (len(data)) == 0:thread_list = []while q.empty() == False:t = q.get()thread_list.append(t)t.start()for t in thread_list:t.join()6.完整⽰例import pymysqlimport threadingimport reimport timefrom queue import Queuefrom DBUtils.PooledDB import PooledDBclass ThreadInsert(object):"多线程并发MySQL插⼊数据"def __init__(self):start_time = time.time()self.pool = self.mysql_connection()self.data = self.getData()self.mysql_delete()self.task()print("========= 数据插⼊,共耗时:{}'s =========".format(round(time.time() - start_time, 3))) def mysql_connection(self):maxconnections = 15 # 最⼤连接数pool = PooledDB(pymysql,maxconnections,host='localhost',user='root',port=3306,passwd='123456',db='test_DB',use_unicode=True)return pooldef getData(self):st = time.time()with open("10w.txt", "rb") as f:data = []for line in f:line = re.sub("\s", "", str(line, encoding="utf-8"))line = tuple(line[1:-1].split("\"\""))data.append(line)n = 100000 # 按每10万⾏数据为最⼩单位拆分成嵌套列表result = [data[i:i + n] for i in range(0, len(data), n)]print("共获取{}组数据,每组{}个元素.==>> 耗时:{}'s".format(len(result), n, round(time.time() - st, 3))) return resultdef mysql_delete(self):st = time.time()con = self.pool.connection()cur = con.cursor()sql = "TRUNCATE TABLE test"cur.execute(sql)mit()cur.close()con.close()print("清空原数据.==>> 耗时:{}'s".format(round(time.time() - st, 3)))def mysql_insert(self, *args):con = self.pool.connection()cur = con.cursor()sql = "INSERT INTO test(sku, fnsku, asin, shopid) VALUES(%s, %s, %s, %s)"try:cur.executemany(sql, *args)mit()except Exception as e:con.rollback() # 事务回滚print('SQL执⾏有误,原因:', e)finally:cur.close()con.close()def task(self):q = Queue(maxsize=10) # 设定最⼤队列数和线程数st = time.time()while self.data:content = self.data.pop()t = threading.Thread(target=self.mysql_insert, args=(content,))q.put(t)if (q.full() == True) or (len(self.data)) == 0:thread_list = []while q.empty() == False:t = q.get()thread_list.append(t)t.start()for t in thread_list:t.join()print("数据插⼊完成.==>> 耗时:{}'s".format(round(time.time() - st, 3)))if __name__ == '__main__':ThreadInsert()插⼊数据对⽐共获取1组数据,每组100000个元素.== >> 耗时:0.374's清空原数据.== >> 耗时:0.031's数据插⼊完成.== >> 耗时:2.499's=============== 10w数据插⼊,共耗时:3.092's ===============共获取5组数据,每组100000个元素.== >> 耗时:1.745's清空原数据.== >> 耗时:0.0's数据插⼊完成.== >> 耗时:16.129's=============== 50w数据插⼊,共耗时:17.969's ===============共获取10组数据,每组100000个元素.== >> 耗时:3.858's清空原数据.== >> 耗时:0.028's数据插⼊完成.== >> 耗时:41.269's=============== 100w数据插⼊,共耗时:45.257's ===============共获取50组数据,每组100000个元素.== >> 耗时:19.478's清空原数据.== >> 耗时:0.016's数据插⼊完成.== >> 耗时:317.346's=============== 500w数据插⼊,共耗时:337.053's ===============7.思考/总结思考 :多线程+队列的⽅式基本能满⾜⽇常的⼯作需要,但是细想还是有不⾜;例⼦中每次执⾏10个线程任务,在这10个任务执⾏完后才能重新添加队列任务,这样会造成队列空闲.如剩余1个任务未完成,当中空闲数 9,当中的资源时间都浪费了;是否能⼀直保持队列饱满的状态,每完成⼀个任务就重新填充⼀个.到此这篇关于Python3 多线程(连接池)操作MySQL插⼊数据的⽂章就介绍到这了,更多相关Python3 多线程插⼊MySQL数据内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。

Python异步操作MySQL示例【使用aiomysql】

Python异步操作MySQL示例【使用aiomysql】

Python异步操作MySQL⽰例【使⽤aiomysql】本⽂实例讲述了Python异步操作MySQL。

分享给⼤家供⼤家参考,具体如下:安装aiomysql依赖Python3.4+asyncioPyMySQL安装pip install aiomysql应⽤基本的异步连接connectionimport asynciofrom aiomysql import create_poolloop = asyncio.get_event_loop()async def go():async with create_pool(host='127.0.0.1', port=3306,user='root', password='',db='mysql', loop=loop) as pool:async with pool.get() as conn:async with conn.cursor() as cur:await cur.execute("SELECT 42;")value = await cur.fetchone()print(value)loop.run_until_complete(go())异步的连接池 poolimport asyncioimport aiomysqlasync def test_example(loop):pool = await aiomysql.create_pool(host='127.0.0.1', port=3306,user='root', password='',db='mysql', loop=loop)async with pool.acquire() as conn:async with conn.cursor() as cur:await cur.execute("SELECT 42;")print(cur.description)(r,) = await cur.fetchone()assert r == 42pool.close()await pool.wait_closed()loop = asyncio.get_event_loop()loop.run_until_complete(test_example(loop))对象关系映射SQLAlchemy - Object Relationship Mapping可以随意定义表结构,轻松调⽤查询、插⼊等操作⽅法。

Python中的PyMySQL库连接MySQL数据库

Python中的PyMySQL库连接MySQL数据库

Python中的PyMySQL库连接MySQL数据库在 Python 编程中,与数据库进行交互是一项常见且重要的任务。

而MySQL 作为广泛使用的关系型数据库,通过 PyMySQL 库可以轻松实现与 Python 程序的连接和数据操作。

接下来,让我们详细了解一下如何使用 PyMySQL 库来连接 MySQL 数据库。

首先,我们需要确保已经安装了 PyMySQL 库。

可以使用 pip 命令来进行安装:`pip install PyMySQL` 。

安装完成后,就可以开始编写代码来连接数据库了。

要连接 MySQL 数据库,需要知道数据库的主机名(通常是本地主机`localhost`)、端口号(默认是 3306)、用户名、密码以及要连接的数据库名称。

以下是一个简单的示例代码:```pythonimport pymysql建立数据库连接conn = pymysqlconnect(host='localhost',port=3306,user='_____',password='_____',database='_____')创建一个游标对象cursor = conncursor()执行 SQL 语句cursorexecute('SELECT FROM your_table')获取查询结果results = cursorfetchall()打印结果for row in results:print(row)关闭游标和连接cursorclose()connclose()```在上述代码中,`pymysqlconnect` 函数用于建立与数据库的连接。

其中,`host` 参数指定数据库服务器的主机名,`port` 参数指定端口号,`user` 和`password` 分别是登录数据库的用户名和密码,`database` 则是要连接的数据库名称。

连接成功后,通过`conncursor()`创建了一个游标对象`cursor` 。

python操作mysql实例

python操作mysql实例

python操作mysql实例python操作mysql实例使⽤ORM模型SQLAlchemy模式⾸先安装所需模块pip install SQLAlchemypip install pymysql本实例使⽤了名为test的数据库,所以在运⾏本例之前,要确保test数据库已经存在2、完整增、删、改、查实例from sqlalchemy import create_engine,MetaData,Table,Column,Integer,String,Float,exc,ormfrom sqlalchemy.ext.declarative import declarative_base#定义⽤于mysql连接字符串,通过pymysql指定sqlalchemy底层⽤的pymysql模块#操作mysql,root是⽤户名,jenkins@123是密码db5是数据库名mysql='mysql+pymysql://root:jenkins@123@192.168.0.93:3306/tb5?charset=utf8'#定义要操作的表名tableName='tb5'#创建数据库引擎(sqlalchemy.engine.base.Engine 对象)engine=create_engine(mysql,encoding='utf-8')#开始连接数据库engine.connect()#创建MetaData对象metadata=MetaData(engine)#创建⽤于定义表元数据的Table对象,该表⼀共5个字段,字段id是主键person=Table(tableName,metadata,Column('id',Integer,primary_key=True),Column('name',String(30)), #长度30的字符串类型Column('age',Integer),Column('address',String(100)), #长度为100的字符串类型Column('salary',Float))#创建表metadata.create_all(engine)Base=declarative_base()#定义与tb1表对应的Person类class Person(Base):#指定表名__tablename__=tableNameid=Column(Integer,primary_key=True)name=Column(String(30))age=Column(Integer)address=Column(String(100))salary=Column(Float)Session=orm.sessionmaker(bind=engine)# 创建会话(Session)session=Session()#(增)#先删除person1表中所有的记录,以免在插⼊记录时造成主键冲突session.query(Person).delete()#提交后对数据库的修改才⽣效mit()# 下⾯创建3个Person对象person1=Person(id=10,name='Bill',age=30,address='地球',salary='1111')person2=Person(id=20,name='Mike',age=40,address='⽕星',salary='2222')person3=Person(id=30,name='John',age=50,address='⽉球',salary='3333')# 下⾯向tb1表中插⼊3条记录session.add(person1)session.add(person2)session.add(person3)#提交后对数据库的修改才⽣效mit()print("成功插⼊记录")#(改)#先查询name=Mike的记录,然后将所有记录的address字段替换成“千星之城”session.query(Person).filter( == 'Mike').update({'address': '千星之城'})#提交修改mit()#(查+改)#查询所有name等于John的记录query=session.query(Person).filter( == 'John')#输出了⽤于查询的SQL语句(由SQLAlchemy字段⽣成)print(query)#将查新的结果集转为单⼀的对象(Person对象),使⽤scalar⽅法时必须要保证查询结果集只有⼀条记录,person=query.scalar()#修改person对象的属性值person.age=12person.salary=5000#提交修改mit()print('成功更新了记录')#使⽤组合条件查询tb1表中的记录persons=session.query(Person).filter((Person.age>=10) & (Person.salary>=2000))#通过对查询结果进⾏迭代,输出所有查询结果,for person in persons:print('name','=',,end='')print('age','=',person.age,end='')print('salary','=',person.salary,end='')#输出查询结果中的第1条记录的name字段值print(persons.first().name) #试过不管⽤#输出查询结果中第2条记录的name字段值print(persons.offset(1).scalar().name) #⼀共2⾏记录,查询最后⼀⾏记录。

python操作mysql实验

python操作mysql实验

python操作mysql实验
实验题目:Python操作数据库实验【实验目的与要求】
一、实验目的
1. 熟练掌握python环境的安装与配置;
2. 熟练掌握PyMySQL的安装与导入;
3. 熟练掌握python操作数据库的步骤
二、实验要求
1.实验前做好上机实验的准备,针对实验内容,认真复习与本次实
验有关的知识,完成实验内容的预习准备工作。

2.能认真独立完成实验内容。

3.实验后做好实验总结,根据实验情况完成实验报告。

【实验环境】
PC机、Windows 7系统+MySQL、Python运行环境、PyChram 开发工具。

【实验内容】
完成如下操作:
1.完成Python、Pycharm环境的安装与配置。

2.完成PyMySQL的安装与导入。

使用MySQL和Python进行数据分析的实例

使用MySQL和Python进行数据分析的实例

使用MySQL和Python进行数据分析的实例引言:数据分析是如今信息时代的一项重要技能,它帮助我们从大量的数据中发现有意义的信息和模式,为决策提供支持。

而MySQL和Python是两个非常强大的工具,其结合使用,可以提供一种高效且灵活的数据分析解决方案。

本文将以一个实例来介绍如何使用MySQL和Python进行数据分析的过程。

一、背景和数据收集在开始之前,我们先来了解一下本文的背景和数据收集的过程。

假设我们是一家电商公司,我们想要分析我们网站的销售数据,以便于了解用户的购买习惯和产品的表现。

我们已经在MySQL数据库中存储了所有的销售数据,包括订单信息、产品信息、用户信息等。

我们的目标是从这些数据中提取有用的信息,生成报告并得出结论。

二、数据预处理在进行数据分析之前,我们首先需要进行数据预处理,以确保数据的质量和完整性。

这包括数据清洗、去重、缺失值处理等。

在MySQL中,我们可以使用SQL 语句来完成这些任务。

例如,我们可以使用如下语句清洗数据表,去除重复的记录:```DELETE FROM sales_dataWHERE row_id NOT IN (SELECT MIN(row_id)FROM sales_dataGROUP BY order_id);```三、数据分析完成数据预处理后,我们就可以进行数据分析了。

在本例中,我们选择使用Python的数据分析库pandas和matplotlib进行分析。

首先,我们需要连接MySQL 数据库,并将数据读取到pandas的DataFrame中。

可以使用如下代码实现:```pythonimport pandas as pdimport pymysql# 连接MySQL数据库conn = pymysql.connect(host='localhost', port=3306, user='root',password='password', database='sales')# 查询数据并导入DataFramequery = "SELECT * FROM sales_data"data = pd.read_sql_query(query, conn)# 关闭数据库连接conn.close()```接下来,我们可以使用pandas提供的各种数据操作和分析方法对数据进行处理和分析。

Python操作MySQL数据库的示例代码

Python操作MySQL数据库的示例代码

Python操作MySQL数据库的⽰例代码1. MySQL Connector1.1 创建连接import mysql.connectorconfig={"host":"localhost","port":"3306","user":"root","password":"password","database":"demo"}con=mysql.connector.connect(**config)import mysql.connectorconfig={"host":"localhost","port":"3306","user":"root","password":"password","database":"demo"}con=mysql.connector.connect(**config)1.2 Cursorimport mysql.connectorcon=mysql.connector.connect(host="localhost",port="3306",user="root",password="password",database="demo")cursor=con.cursor()sql="SELECT empno,job,sal FROM t_bonus;"cursor.execute(sql)print(type(cursor))for i in cursor:print(i)con.close()Result:<class 'mysql.connector.cursor_cext.CMySQLCursor'>(7369, 'CLERK', Decimal('8000.00'))(7499, 'SALESMAN', Decimal('1600.00'))(7521, 'SALESMAN', Decimal('1250.00'))(7566, 'MANAGER', Decimal('2975.00'))(7654, 'SALESMAN', Decimal('1250.00'))(7698, 'MANAGER', Decimal('2850.00'))(7782, 'MANAGER', Decimal('2450.00'))(7788, 'ANALYST', Decimal('3000.00'))(7839, 'PRESIDENT', Decimal('5000.00'))(7844, 'SALESMAN', Decimal('1500.00'))(7900, 'CLERK', Decimal('950.00'))(7902, 'ANALYST', Decimal('3000.00'))(7934, 'CLERK', Decimal('1300.00'))1.3 SQL注⼊攻击1. username=1 OR 1=1 password=1 OR 1=12. 在使⽤字符串直接拼接时OR之前不管对错,与OR结合都为true3. 解决⽅法——预编译(也可以提⾼速度)1.4 事务管理和异常处理sql连接和使⽤异常处理异常import mysql.connectortry:con=mysql.connector.connect(host="localhost",port="3306",user="root",password="password",database="demo")con.start_transaction()cursor=con.cursor()sql="INSERT INTO t_dept(deptno,dname,loc) VALUES(%s,%s,%s);"cursor.execute(sql,(60,"SALES","HUBAI"))mit()except Exception as e:if "con" in dir():con.rollback()print(e)finally:if "con" in dir():con.close()1.5 删除数据import mysql.connector,mysql.connector.poolingconfig={"host": "localhost", "port": "3306","user": "root", "password": "password","database": "demo"}try:pool=mysql.connector.pooling.MySQLConnectionPool(**config,pool_size=5)con=pool.get_connection()con.start_transaction()cursor = con.cursor()sql = "DELETE FROM t_dept WHERE deptno=%s"cursor.execute(sql, (70,))mit()except Exception as e:if "con" in dir():con.rollback()print(e)# do not need to close conexecutemany() 反复执⾏⼀条SQL语句import mysql.connector,mysql.connector.poolingconfig={"host": "localhost", "port": "3306","user": "root", "password": "password","database": "demo"}try:pool=mysql.connector.pooling.MySQLConnectionPool(**config,pool_size=5)con=pool.get_connection()con.start_transaction()cursor = con.cursor()sql = "INSERT INTO t_dept(deptno,dname,loc) VALUES(%s,%s,%s);"date=[[70,"SALES","BEIJING"],[80,"ACTOR","SHANGHAI"]]cursor.executemany(sql, date)mit()except Exception as e:if "con" in dir():con.rollback()print(e)# do not need to close con2. 数据库连接池1. 数据库的连接是昂贵的,⼀个连接要经过TCP三次握⼿,四次挥⼿,⽽且⼀台计算机的最⼤线程数也是有限的2. 数据库连接池技术就是先创建好连接,再直接拿出来使⽤import mysql.connector,mysql.connector.poolingconfig={"host": "localhost", "port": "3306","user": "root", "password": "password","database": "demo"}try:pool=mysql.connector.pooling.MySQLConnectionPool(**config,pool_size=5)con=pool.get_connection()con.start_transaction()cursor = con.cursor()sql = "INSERT INTO t_dept(deptno,dname,loc) VALUES(%s,%s,%s);"cursor.execute(sql, (70, "SALES", "HUBAI"))mit()except Exception as e:if "con" in dir():con.rollback()print(e)# do not need to close con以上就是Python操作MySQL数据库的⽰例代码的详细内容,更多关于Python操作MySQL数据库的资料请关注其它相关⽂章!。

Pythonpymysql操作MySQL详细

Pythonpymysql操作MySQL详细

Pythonpymysql操作MySQL详细⽬录1、使⽤1.1 简单使⽤1.2 封装⼯具类1、使⽤1.1 简单使⽤import pymysql# 创建连接con = pymysql.connect(host='localhost',port=3306,user='root',password='123456',database='test',charset='utf8')# 创建游标cursor = con.cursor()# 执⾏新增SQL,返回受影响⾏数row1 = cursor.execute("insert into user (username, password) values ('username3','password3')")print(row1)# 执⾏更新SQL,返回受影响⾏数row2 = cursor.execute("update user set password = '123456' where id > 2;")# 执⾏查询SQLres = cursor.execute("SELECT * FROM user;")result = cursor.fetchall()for info in result:print(info[0], info[1])# 提交,不然⽆法保存新增或者更新的数据mit()# 关闭游标cursor.close()# 关闭连接con.close()注意:数据库表中存在中⽂时,创建连接需要指定charset='utf8',否则中⽂显⽰会乱码。

其中cursor.fetchall()是获取所有结果集,如果只有⼀条结果集,可以使⽤cursor.fetchone()。

Python使用MySQL数据库的方法以及一个实例

Python使用MySQL数据库的方法以及一个实例

Python使⽤MySQL数据库的⽅法以及⼀个实例使⽤环境:Windows+python3.4+MySQL5.5+Navicat⼀、创建连接1.准备⼯作,想要使⽤Python操作MySQL,⾸先需要安装MySQL-Python的包,在Python 3.x下,该包已经改名为MySQLClient。

可以使⽤pip⽅式安装:pip install MySQLClient或者下载包⽂件,进⾏安装也可以。

2.Python使⽤MySQL的流程:3.启动MySQL服务器:以管理员⾝份启动“cmd”,输⼊命令:’net start mysql‘Python中使⽤MySQL导⼊⽅法:import MySQLdb4.创建Connection Connection:创建了Python客户端与数据库之间的⽹络通路。

他的参数如下参数名类型说明host String MySQL的服务器地址port int MySQL的端⼝号user String⽤户名passwd String密码db String使⽤的数据库charset String连接字符集 Connection⽀持的⽅法:⽅法名说明cursor()创建并且返回游标commit()提交当前事物rollback()回滚当前事物r()close()关闭Connection5.获取Cursor.Cursor:游标对象,⽤于执⾏查询和获取结果,它⽀持的⽅法如下:⽅法名说明execute()⽤于执⾏⼀个数据库的查询命令fetchone()获取结果集中的下⼀⾏fetchmany(size)获取结果集中的下(size)⾏fetchall()获取结果集中剩下的所有⾏rowcount最近⼀次execute返回数据/影响的⾏数close()关闭游标下⾯我们在Python中创建⼀个实例:import MySQLdbconn=MySQLdb.connect(host='127.0.0.1',port=3306,user='root',passwd='199331',db='test',charset='utf8')cursor=conn.cursor()print(conn)print(cursor)cursor.close()conn.close()运⾏程序结果如下:从结果中我们可以看见成功创建了⼀个Connection和Cursor对象。

Python连接mysql数据库及简单增删改查操作示例代码

Python连接mysql数据库及简单增删改查操作示例代码

Python连接mysql数据库及简单增删改查操作⽰例代码1.安装pymysql进⼊cmd,输⼊ pip install pymysql:2.数据库建表在数据库中,建⽴⼀个简单的表,如图:3.简单操作3.1查询操作#coding=utf-8#连接数据库测试import pymysql#打开数据库db = pymysql.connect(host="localhost",user="root",password="root",db="test")#使⽤cursor()⽅法获取操作游标cur = db.cursor()#查询操作sql = "select * from books"try:# 执⾏sql语句cur.execute(sql)results = cur.fetchall()#遍历结果for rows in results:id = rows[0]name = rows[1]price = rows[2]bookcount = rows[3]author = rows[4]print("id: {}, name: {}, price: {}, bookcount: {}, author: {}".format(id,name,price,bookcount,author)) except Exception as e:raise efinally:db.close()运⾏结果:3.2插⼊操作#coding=utf-8#插⼊操作import pymysqldb = pymysql.connect(host="localhost",user="root",password="root",db="test")cur = db.cursor()sql = """insert into books(id,bookname,price,bookCount,author) values (4,'三体',20,3,'刘慈欣')""" try:cur.execute(sql)#提交mit()except Exception as e:#错误回滚db.rollback()finally:db.close()运⾏结果:3.3更新操作#coding=utf-8#更新操作import pymysqldb = pymysql.connect(host="localhost",user="root",password="root",db="test")# 使⽤cursor()⽅法获取游标cur = db.cursor()sql_update = "update books set bookname = '%s',author = '%s' where id = %d" try:cur.execute(sql_update % ("边城","沈从⽂",4))#提交mit()except Exception as e:#错误回滚db.rollback()finally:db.close()运⾏结果:3.4删除操作#coding=utf-8#删除操作import pymysqldb = pymysql.connect(host="localhost",user="root",password="root",db="test") #使⽤cursor()获取操作游标cur = db.cursor()sql_delete = "delete from books where id = %d"try:#向sql语句传递参数cur.execute(sql_delete % (1))#提交mit()except Exception as e:#错误回滚db.rollback()finally:db.close()运⾏结果:到此这篇关于Python连接mysql数据库及简单增删改查操作⽰例代码的⽂章就介绍到这了,更多相关Python连接mysql数据库及增删改查操作内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。

python操作MySQL数据库储存数据,涵盖插入删除查询修改全过程

python操作MySQL数据库储存数据,涵盖插入删除查询修改全过程

python操作MySQL数据库储存数据,涵盖插入删除查询修改全过程今天的内容是: python 操作MySQL说到数据库,可能有些朋友没有学过MySQL数据库语句语法,不过没关系,python中操作数据库储存数据,也就是创建一个表格,然后向表格中插入数据的过程,没有多少内容的,数据库表格最常用的知识点也就4点,下面具体介绍理论和实战例子:1.在python这里操作MySQL数据库有4个内容:添加(插入)内容 + 删除内容 + 查询内容 + 修改(更新)内容2.创建表格和插入数据进入表格的专有单词大小写都可以例如:cur.execute('create table person (id int not null auto_increment primary key, \name varchar (20), age int)')3.疑惑解答:表格已经创建,如果还想要在这个已经创建的表格中插入数据,就将创建表格的代码注释掉。

实战例子:这里涵盖了python操作MySQL数据库的所有常用的知识点,掌握的话,对这一块数据储存就没什么大问题了。

# 1.导入模块import pymysql# 2.打开数据库,即连接到数据库(前面4个必写且顺序不能变)# 端口port='', 字符类型charset='utf-8'conn = pymysql.connect(host='localhost', user='root', passwd='root', db='lxz')# 3.数据库连接对象,创建游标,execute()执行MySQL语句,executemany()执行多条MySQL语句cur = conn.cursor()################## 4.建立一个名字为person的表格来储存信息 ############################cur.execute('create table person (id int not null auto_increment primary key, \ name varchar (20), age int)')内容1:插入数据################# 5.向表格中插入数据########################################### #################### 单独数据插入# cur.execute('insert into person (name,age) values('lxz',21)') # 直接赋值# cur.executemany('insert into person (name,age) values (%s,%s)',\ # [('qqaa', 21), ('bbb', 19), ('ccc', 16), ('ddd', 28), ('eee', 37)]) # 通过占位符赋值############# 批量数据插入,通过占位符才可以总结经验,用cur.execute()批量处理要有两个占位符(不能多也不能少,无论插入的数据有多少都只能是两个),后面的kkk1是一个[(),(),()]这样形式的列表#第一个方法:对cur.execute()而言,批量插入式通过循环实现的name1 = ['aaa','bbb','ccc','ddd','eee'] age1 = [21,19,16,28,37] for i in range(len(name1)): kk = (str(name1[i]),age1[i]) cur.execute('insert into person (name,age) values (%s,%s)',kk) # 第二个方法:对于cur.executemany()而言,将所有数据添加至一个列表中,然后将列表名插进来就可以了kkk1 = [] for i in range(len(name1)): kkk2 = (name1[i],age1[i]) # print(kkk2) kkk1.append(kkk2) # print(kkk1) cur.executemany('insert into person (name,age) values (%s,%s)',kkk1)内容2:########################## 6.查询数据########################################### ######游标提供了fetchall()方法获取所有数据,返回一个二维元组和fetchone()方法获取其中的一个结果,返回一个元组############ 使用fetchall()方法输出所有数据cur.execute('select * from person') res = cur.fetchall() # print(res) for item in res: # 输出数据库表格中的所有数据# print('id='+str(item[0])+'\tname='+str(item[1])+'\tage='+str(ite m[2]))############ 使用fetchone()方法输出一行数据cur.execute('select * from person') res = cur.fetchone() # print('fetchone()方法:',res)内容3: ###################### 7.修改(更新)数据########################################### ################### 单个修改# 修改id等于1的名字'lxz'为另外一个名字'vivo',person是表格的名称cur.execute('update person set name = %s where id = %s',('vivo',1))################ 批量修改(更新)name1 = ['@ab','@bbb','@ccc','@ddd','@eee'] id = [3,4,5,16,18] for i in range(len(name1)): kk = (str(name1[i]),id[i]) cur.execute('update person set name = %s where id = %s',kk) 内容4:####################### 8.删除数据########################################### ######################### 删除一行内容# 删除id等于2这一行的内容 cur.execute('delete from personwhere id = %s',(2,))############## 批量删除内容id = [] # 通过循环批量生成id号,批量删除id号所对应行的内容for i in range(22,141): id = (i,) cur.execute('delete from person where id = %s',id)# 9.对数据库对象conn进行提交操作mit() # 如果出现错误,可以使用回滚操作conn.rollback()# 10.关闭游标cur.close()# 11.关闭数据库的连接conn.close()以上就是python操作MySQL数据库的所有常见的内容了,希望对读者朋友有帮助。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

本文由我司收集整编,推荐下载,如有疑问,请与我司联系
Python操作MySQL案例
2016/01/23 0 最近都在学习Python代码,希望学会Python后,能给我带来更高的工作效率,因此每天坚持学习和拷代码,下面是一个Python操作MySQL的一个实例,该实例可以让更多的人更好了解MySQLdb模块的使用。

我是Python菜鸟,通过学习别人的实例来让自己学到更多Python知识。

 案例:用Python实现银行转账
 一、在MySQL创建一张表account表,然后在里面插入两条数据:
 mysql show create table account\G*************************** 1. row *************************** Table: accountCreate Table: CREATE TABLE `account` ( `userid` int(11) DEFAULT NULL COMMENT ‘账号ID’, `money` int(11) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin1 row in set (0.02 sec)mysql 当前数据:
 mysql select * from account;+--------+-------+| userid | money |+--------+-------+| 1 | 200 || 2 | 200 |+--------+-------+2 rows in set (0.00 sec)mysql
 编辑脚本money.py文件,运行些脚本需要安装MySQLdb模块,详细安装和基本的使用可以参考我的博客:cnblogs/xuanzhi201111/p/5144982.html
 #!/usr/bin/env python#coding:utf-8#name:money.pyimport sysimport MySQLdb try: sql = “select * from account where userid = %s and money %s” % (source_userid,money) cursor.execute(sql) print “\033[;32m检查是否有足够的钱: \033[0m” + sql except Exception,e: raise Exception(‘执行sql错误:%s’ % e) else: rs = cursor.fetchall() if len(rs) != 1: raise Exception (“账号%s余额不足” % source_userid) finally: cursor.close()#用于减去转掉的部份金额def reduce_money(self,source_userid,money): cursor = self.conn.cursor() try: sql = “update account set money = money - %s where userid=%s” % (money,source_userid) cursor.execute(sql) print “\033[;32m从源账户%s 里扣掉对应的金额: \033[0m” % (source_userid) + sql except Exception,e: raise。

相关文档
最新文档