正文
【数据驱动】python之mysql的操作
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
1、准备工作
在本篇中,我们使用python版本为python3.7。在python3中,连接mysql数据库我们需要使用pymysql这个第三方库。我们可以直接使用pip命令来安装,安装的命令为:
pip install PyMySQL
如果在你的环境中同时存在python2和python3两个版本,那么我们需要安装python3版本的时候就可以使用
pip3 install PyMySQL
2、连接数据库
在做好准备工作后,我们就可以开始使用pymysql这个第三方库进行连接mysql了
import pymysql '''连接数据库,我们直接调用connect这个函数,需要在该函数中传入数据库的连接信息,如
数据库的IP地址、账号、密码和数据库的名称'''
conn = pymysql.connect(host='127.0.0.1', user='root', passwd='', db='test')
2.1 python连接mysql后执行插入语句
import pymysql
'''连接数据库,我们直接调用connect这个函数,需要在该函数中传入数据库的连接信息,如
数据库的IP地址、账号、密码和数据库的名称'''
def connMysql():
try:
conn = pymysql.connect(host='127.0.0.1', user='root', passwd='', db='test')
return conn
except:
return '连接失败'
'''操作mysql往数据库中插入一条数据'''
def insertOne():
'''在成功连接mysql之后,我们需要建立一个游标,只有建立成功了游标,才可以对mysql进行操作'''
conn = connMysql()
cur = conn.cursor()
sql = 'INSERT INTO tab_user VALUES (%s, %s)'
params = (1, 'admin')
'''使用excute函数将需要查询的sql和变量传入'''
cur.execute(sql, params)
conn.commit()
'''在操作完数据库之后,我们需要关闭游标和连接对象,否则连接池会被占满'''
cur.close()
conn.close()
'''操作mysql插入多条数据'''
def insertMany():
conn = connMysql()
cur = conn.cursor()
sql = 'INSERT INTO tab_user VALUES (%s, %s)'
params = [(2, '张三'), (3, '李四')]
'''使用executemany函数将需要查询的sql和变量传入'''
cur.executemany(sql, params)
conn.commit()
'''在操作完数据库之后,我们需要关闭游标和连接对象,否则连接池会被占满'''
cur.close()
conn.close()
2.2 python连接mysql后执行查询语句
import pymysql
'''连接数据库,我们直接调用connect这个函数,需要在该函数中传入数据库的连接信息,如
数据库的IP地址、账号、密码和数据库的名称'''
def connMysql():
try:
#conn = pymysql.connect(host='127.0.0.1', user='root', passwd='123456', db='test')
conn = pymysql.connect(host='10.66.132.42', user='cdb_outerroot', passwd='@09ui%sbc09', db='gic_marketing')
return conn
except:
return '连接失败'
'''查询一条数据'''
def get_one():
conn = connMysql()
cur = conn.cursor()
sql = "SELECT * FROM tab_user WHERE id = %s"
params = (2,)
cur.execute(sql, params)
'''查询只有一条数据的时候使用fetchone()'''
result = cur.fetchone()
cur.close()
conn.close()
return result
'''查询所有数据'''
def get_All():
conn = connMysql()
cur = conn.cursor()
sql = "SELECT * FROM tab_gic_coup_card"
cur.execute(sql)
'''需要查询所有数据的时候应该使用fetchall()'''
result = cur.fetchall()
#db = [item for item in result]
cur.close()
conn.close()
return result
'''查询部分数据'''
def get_Many():
conn = connMysql()
cur = conn.cursor()
sql = "SELECT * FROM tab_gic_coup_card WHERE card_name like %s"
params = ('%测试')
cur.execute(sql)
'''fetchmany()需要传入变量来确定查询几条数据,如果不传入则默认只查询一条'''
result = cur.fetchmany(2)
'''列表推倒式,在这里就不做说明,也可以不使用列表推倒式,直接return result'''
db = [item for item in result]
cur.close()
conn.close()
return db
import pymysql '''连接数据库,我们直接调用connect这个函数,需要在该函数中传入数据库的连接信息,如
数据库的IP地址、账号、密码和数据库的名称'''
def connMysql():
try:
conn = pymysql.connect(host='127.0.0.1', user='root', passwd='', db='test')
return conn
except:
return '连接失败' '''操作mysql往数据库中插入一条数据'''
def insertOne():
'''在成功连接mysql之后,我们需要建立一个游标,只有建立成功了游标,才可以对mysql进行操作'''
conn = connMysql()
cur = conn.cursor()
sql = 'INSERT INTO tab_user VALUES (%s, %s)'
params = (1, 'admin')
'''使用excute函数将需要查询的sql和变量传入'''
cur.execute(sql, params)
conn.commit()
'''在操作完数据库之后,我们需要关闭游标和连接对象,否则连接池会被占满'''
cur.close()
conn.close() '''操作mysql插入多条数据'''
def insertMany():
conn = connMysql()
cur = conn.cursor()
sql = 'INSERT INTO tab_user VALUES (%s, %s)'
params = [(2, '张三'), (3, '李四')]
'''使用executemany函数将需要查询的sql和变量传入'''
cur.executemany(sql, params)
conn.commit()
'''在操作完数据库之后,我们需要关闭游标和连接对象,否则连接池会被占满'''
cur.close()
conn.close()
import pymysql '''连接数据库,我们直接调用connect这个函数,需要在该函数中传入数据库的连接信息,如
数据库的IP地址、账号、密码和数据库的名称'''
def connMysql():
try:
#conn = pymysql.connect(host='127.0.0.1', user='root', passwd='123456', db='test')
conn = pymysql.connect(host='10.66.132.42', user='cdb_outerroot', passwd='@09ui%sbc09', db='gic_marketing')
return conn
except:
return '连接失败' '''查询一条数据'''
def get_one():
conn = connMysql()
cur = conn.cursor()
sql = "SELECT * FROM tab_user WHERE id = %s"
params = (2,)
cur.execute(sql, params)
'''查询只有一条数据的时候使用fetchone()'''
result = cur.fetchone()
cur.close()
conn.close()
return result '''查询所有数据'''
def get_All():
conn = connMysql()
cur = conn.cursor()
sql = "SELECT * FROM tab_gic_coup_card"
cur.execute(sql)
'''需要查询所有数据的时候应该使用fetchall()'''
result = cur.fetchall()
#db = [item for item in result]
cur.close()
conn.close()
return result '''查询部分数据'''
def get_Many():
conn = connMysql()
cur = conn.cursor()
sql = "SELECT * FROM tab_gic_coup_card WHERE card_name like %s"
params = ('%测试')
cur.execute(sql)
'''fetchmany()需要传入变量来确定查询几条数据,如果不传入则默认只查询一条'''
result = cur.fetchmany(2)
'''列表推倒式,在这里就不做说明,也可以不使用列表推倒式,直接return result'''
db = [item for item in result]
cur.close()
conn.close()
return db
修改和删除就不在此说明,可参考“2.1 python连接mysql后执行插入语句“的代码