由于 MySQLdb 模块还不支持 Python3.x,所以 Python3.x 如果想连接MySQL需要安装 pymysql 模块。
pymysql 模块可以通过 pip 安装。但如果你使用的是 pycharm IDE,则可以使用 project python 安装第三方模块。
由于Python统一了数据库连接的接口,所以 pymysql 和 MySQLdb 在使用方式上是类似的:
#创建数据库连接
pymysql.Connect()参数说明
host(str): MySQL服务器地址
port(int): MySQL服务器端口号
user(str): 用户名
passwd(str): 密码
db(str): 数据库名称
charset(str): 连接编码,存在中文的时候,连接需要添加charset=‘utf8’,否则中文显示乱码。
connection对象支持的方法
cursor() 使用该连接创建并返回游标
commit() 提交当前事务,不然无法保存新建或者修改的数据
rollback() 回滚当前事务
close() 关闭连接
cursor对象支持的方法
execute(op) 执行SQL,并返回受影响行数
fetchone() 取得结果集的下一行
fetchmany(size) 获取结果集的下几行
fetchall() 获取结果集中的所有行
rowcount() 返回数据条数或影响行数
close() 关闭游标对象
import pymysql.cursors
连接数据库
connect = pymysql.Connect(
host=‘10.121.215.238’,
port=3308,
user=‘root’,
passwd=‘1234’,
db=‘mydb’,
charset=‘utf8’
)
获取游标
cursor = connect.cursor()
插入数据
for i in range(10000,10010):
print(i)
sql = “INSERT INTO http_detail_2021011317 (id, SOURCE_IP,DEST_IP,SOURCE_PORT,DEST_PORT,TITLE,URL,HOST,NET_PERSON_NAME,CARD_TYPE,CARD_NUM,SERVICE_CODE,TERMINAL_NAME,DEVICE_IP,TIME,METHOD,SEND_TYPE,CATEGORY,SUB_CATEGORY,FILE_NAME,CONTENT,LOG_TYPE,TERMINAL_MAC,VLAN,USER_AGENT,DELAY_TIME)
VALUES (%d,‘4-c0a81056’, ‘4-acd9180a’,62587,80,’’ ,‘http://www.123.com’,‘www.123.com’,’’ ,’’ ,’’ ,’’ ,’’ ,‘4-c0a81064’,1610607596,’’ ,2,‘其他类型’,‘其他类型’,’’ ,’’ , ‘http’, ‘00:e0:4c:7c🇩🇪c5’,0,‘UserAgent:Client Agent’, 0)” %i
cursor.execute(sql)
connect.commit()
print(‘成功插入’, cursor.rowcount, ‘条数据’)
‘’’
插入数据
sql = “INSERT INTO trade (name, account, saving) VALUES ( ‘%s’, ‘%s’, %.2f )”
data = (‘雷军’, ‘13512345678’, 10000)
cursor.execute(sql % data)
connect.commit()
print(‘成功插入’, cursor.rowcount, ‘条数据’)
修改数据
sql = "UPDATE trade SET saving = %.2f WHERE account = ‘%s’ "
data = (8888, ‘13512345678’)
cursor.execute(sql % data)
connect.commit()
print(‘成功修改’, cursor.rowcount, ‘条数据’)
查询数据
sql = "SELECT name,saving FROM trade WHERE account = ‘%s’ "
data = (‘13512345678’,)
cursor.execute(sql % data)
for row in cursor.fetchall():
print(“Name:%s\tSaving:%.2f” % row)
print(‘共查找出’, cursor.rowcount, ‘条数据’)
删除数据
sql = “DELETE FROM trade WHERE account = ‘%s’ LIMIT %d”
data = (‘13512345678’, 1)
cursor.execute(sql % data)
connect.commit()
print(‘成功删除’, cursor.rowcount, ‘条数据’)
事务处理
sql_1 = "UPDATE trade SET saving = saving + 1000 WHERE account = ‘18012345678’ "
sql_2 = "UPDATE trade SET expend = expend + 1000 WHERE account = ‘18012345678’ "
sql_3 = "UPDATE trade SET income = income + 2000 WHERE account = ‘18012345678’ "
try:
cursor.execute(sql_1) # 储蓄增加1000
cursor.execute(sql_2) # 支出增加1000
cursor.execute(sql_3) # 收入增加2000
except Exception as e:
connect.rollback() # 事务回滚
print(‘事务处理失败’, e)
else:
connect.commit() # 事务提交
print(‘事务处理成功’, cursor.rowcount)
‘’’
关闭连接
cursor.close()
connect.close()
数据库开启远程连接
1、本地登录mysql数据库
2、use mysql;
3、update user set host = ‘%’ where user = ‘root’;
4、授予所有权限
当然,如果要让root对所有数据库操作权限,还需给root用户进行授权:
grant all privileges on . to root@’%’ identified by “pwd”;
5、FLUSH PRIVILEGES;