PYthon连接数据库并进行操作方法汇总
1.本地开发环境如下
a.操作系统 Mac os
b.数据库 MySQL 8.0
c.Python 3.8.2
d.pip 20.0.3
2.连接数据库的方法
a. PyMySQL
b.mysql.connector
3.python连接数据的常规步骤
a.连接数据库
b.生成游标对象
c.执行SQL语句
d.关闭游标
f.关闭连接
4.PyMySQL 简单介绍
a.它是封装了MySQL驱动的Python驱动,可以Python连接到MySQL的库。
b.环境要求:Python version >= 3.4
c.PyMySQL安装:正常的第三方包导入即可。
d.安装成功后,查看包的版本,可以在终端里输入 pip show PyMySQL
当然,如果用pycharm里导入包,可以直接查看到包的版本。
5.利用PyMySQL连接数据库
import pymysql as pl conn=pl.connect(host='172.18.111.199', port=3306, user='qqdz_reader', passwd='W3AWD5Tkf8kNB', db='fgw_qqzx_prod', charset='utf8') /*fgw_qqzx_prod是数据库名*/ cur = conn.cursor() sql= "select * from qqdz_company_user limit 10" cur.execute(sql) data = cur.fetchall()
# 取前20行数据
for i in data[:20]:
print(i)
cur.close() /*关闭游标*/
conn.close() /*关闭连接*/
6.mysql.connector介绍
a. mysql官方的纯python驱动
b.安装/查看版本,同其他的第三方包一样
7.利用mysql.connector连接数据库
import mysql.connector
#/*fgw_qqzx_prod是数据库名*/
conn=mysql.connector.connect(host='172.18.111.199', port=3306, user='qqdz_reader', passwd='W3AWD5Tkf8kNB', db='fgw_qqzx_prod', charset='utf8') #/*fgw_qqzx_prod是数据库名*/
cur = conn.cursor()
sql= "select * from qqdz_company_user limit 100"
cur.execute(sql)
data = cur.fetchall()
# 取前20行数据
for i in data[:20]:
print(i)
8.python对mysql数据库实现增删改查
增加数据
import pymysql as pl conn=pl.connect(host='172.18.111.199', port=3306, user='qqdz_reader', passwd='W3AWD5Tkf8kNB', db='fgw_qqzx_prod', charset='utf8') #/*fgw_qqzx_prod是数据库名*/ cur = conn.cursor() sql = "insert into qqdz_company_user values ('1','21','33')" try: cur.execute(sql) # 提交到数据库 conn.commit() except: # 如果发生错误,则回滚 conn.rollback() # 关闭数据库连接 conn.close()
查询数据
import pymysql as pl conn=pl.connect(host='172.18.111.199', port=3306, user='qqdz_reader', passwd='W3AWD5Tkf8kNB', db='fgw_qqzx_prod', charset='utf8') /*fgw_qqzx_prod是数据库名*/ cur = conn.cursor() sql= "select * from qqdz_company_user limit 10" cur.execute(sql) data = cur.fetchall() # 取前20行数据 for i in data[:20]: print(i) cur.close() /*关闭游标*/ conn.close() /*关闭连接*/
删除数据
import pymysql as pl conn=pl.connect(host='172.18.111.199', port=3306, user='qqdz_reader', passwd='W3AWD5Tkf8kNB', db='fgw_qqzx_prod', charset='utf8') #/*fgw_qqzx_prod是数据库名*/ cur = conn.cursor() sql = "delete from qqdz_company_user where number = 10" try: cur.execute(sql) # 提交到数据库 conn.commit() except: # 如果发生错误,则回滚 conn.rollback() # 关闭数据库连接 conn.close()
修改数据
import pymysql as pl conn=pl.connect(host='172.18.111.199', port=3306, user='qqdz_reader', passwd='W3AWD5Tkf8kNB', db='fgw_qqzx_prod', charset='utf8') #/*fgw_qqzx_prod是数据库名*/ cur = conn.cursor() sql = "update qqdz_company_user set name = "小明" where number = 10" try: cur.execute(sql) # 提交到数据库 conn.commit() except: # 如果发生错误,则回滚 conn.rollback() # 关闭数据库连接 conn.close()
9.案例演示
import pymysql config = {'host':'172.18.111.199','port':3306, 'user':'qqdz_reader','passwd':'W3AWD5Tkf8kNB', 'charset':'utf8'} conn = pymysql.connect(**config) cursor = conn.cursor() try: # 创建数据库 DB_NAME = 'test_3' cursor.execute('DROP DATABASE IF EXISTS %s' % DB_NAME) cursor.execute('CREATE DATABASE IF NOT EXISTS %s' % DB_NAME) conn.select_db(DB_NAME) #创建表 TABLE_NAME = 'bankData' cursor.execute('CREATE TABLE %s(id int primary key,money int(30))' %TABLE_NAME) # 批量插入纪录 values = [] for i in range(20): values.append((int(i),int(156*i))) cursor.executemany('INSERT INTO bankData values(%s,%s)',values) conn.commit() # 查询数据条目 count = cursor.execute('SELECT * FROM %s' %TABLE_NAME) print ('total records:{}'.format(cursor.rowcount)) # 获取表名信息 desc = cursor.description print ("%s %3s" % (desc[0][0], desc[1][0])) cursor.scroll(10,mode='absolute') results = cursor.fetchall() for result in results: print (result) except: import traceback traceback.print_exc() # 发生错误时会滚 conn.rollback() finally: # 关闭游标连接 cursor.close() # 关闭数据库连接 conn.close()