python 操作mysql 方法讲解:
-
安装模块:
pymysql
pip install pymysql
-
启动mysql数据库
-
连接数据库:
connect()
,返回一个对象
-
con = pymysql.connect(user,passwd,port,host,db,charset)
user
,数据库用户passwd
,数据库登录密码host
,数据库服务器地址db
,要连接的databaseport
,端口号,默认为3306charset
,字符集
-
connect
返回对象常用的方法cursor()
,创建游标commit()
,提交事务rollback()
,回滚事务close()
,关闭数据库连接
-
创建游标:
cur = con.cursor()
,返回游标对象,查询语句的结果保存在元组中cur = con.cursor(pymysql.cursors.DictCursor)
,查询语句的结果保存在字典中· -
操作数据库:通过游标调用
execute()
方法执行SQL语句fetchone()
,从查询结果中获取1行数据fetchmany(n)
,从查询结果中获取n行数据fetchall()
,从查询结果中获取所有数据 -
关闭连接
关闭游标:
cur.close()
关闭数据库连接:
con.close()
例:
import pymysql
# 连接数据库
con = pymysql.connect(user='root',passwd='123456',
host='47.92.203.151',db='atm',
port=3306,charset='utf8')
# 创建游标
cur = con.cursor(pymysql.cursors.DictCursor)
#
acc = input('账号:')
# pwd = input('密码:')
# name = input('姓名:')
# bal = input('余额:')
# sql = f"insert into accounts(account,passwd,name,balance) values('{acc}',md5('{pwd}'),'{name}','{bal}');"
sql = f'select * from accounts where account="{acc}";'
n = cur.execute(sql) # 执行SQL语句
# fetchone(),从查询结果中获取1行数据
# fetchmany(n),从查询结果中获取n行数据
# fetchall(),从查询结果中获取所有数据
print(n)
print(cur.fetchone())
con.commit() # 提交事务
# 关闭
cur.close() # 关闭游标
con.close() # 关闭数据库连接
常用方法整理:
import pymysql
class Mysql:
def con_db(self, user, pwd, host, db, port=3306):
# 连接数据库
con = pymysql.connect(user=user, passwd=pwd,
host=host, db=db,
port=port)
# 创建游标
cur = con.cursor(pymysql.cursors.DictCursor)
return con, cur
def dql(self, cur, sql):
cur.execute(sql)
res = cur.fetchall() # 获取所有查询结果,查询结果为空返回(),不为空返回[{'xx':yy}]
return res
def dml(self, con, cur, sql):
cur.execute(sql)
con.commit() # 所有SQL执行完成后,提交事务
def close(self, con, cur):
cur.close()
con.close()
# 删除数据库数据
def drop_table(self, user, pwd, host, db, port, sql):
con, cur = self.con_db(user=user, pwd=pwd, host=host, db=db, port=port)
self.dml(con, cur, sql)
self.close(con, cur)
def search_info(self, user, pwd, host, db, port, sql):
"""
数据库查询方法
:param user:数据库用户名
:param pwd: 数据库密码
:param host: 数据库主机地址
:param db: 数据库工作簿
:param port: 端口
:param sql: 查询语句
:return:
"""
con, cur = self.con_db(user, pwd, host, db, port)
res = self.dql(cur, sql)
self.close(con, cur)
return res