安装MySQL依赖包
如果pip版本不够【python -m pip install --upgrade pip】,先更新pip到最新版本。
安装语句:【pip install pymysql】
测试数据库以及数据表:
CREATE TABLE `userinfo` ( `id` int(8) NOT NULL AUTO_INCREMENT, `createDate` datetime NOT NULL, `userName` varchar(32) NOT NULL, `introduce` varchar(200) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
链接测试
import pymysql # 导入pymysql库 # 创建数据库连接,注意密码参数passwd不要写成password conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='root', db='test', charset='utf8') print(conn)
使用pymysql执行SQL语句的步骤如下:
创建数据库连接,并返回一个数据库连接对象
使用数据库连接对象中的cursor()函数获取游标对象
调用游标对象中的execute()函数执行SQL语句,该函数返回影响的行数
提交数据库操作,如果不提交将无法保存新建或者修改的数据
关闭游标,释放资源
关闭连接,释放资源
SQL语句测试
建表测试:
import pymysql # 导入pymysql库 import time # 创建数据库连接,注意密码参数passwd不要写成password conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='root', db='test', charset='utf8') cursor = conn.cursor() # 获取游标对象 def GetNow(localTime): """获取当前时间""" return time.strftime("%y-%m-%d %H:%M:%S", localTime) # 建表语句 sql = ''' CREATE TABLE `users` ( `id` int(8) NOT NULL AUTO_INCREMENT, `createDate` datetime NOT NULL, `userName` varchar(32) NOT NULL, `introduce` varchar(200) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; ''' rows = cursor.execute(sql) # 执行SQL语句 conn.commit() # 提交 print("创建表不会返回行数:", rows) cursor.close() # 关闭游标对象 conn.close() # 关闭数据库连接
增删改测试:
import pymysql # 导入pymysql库 import time # 创建数据库连接,注意密码参数passwd不要写成password conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='root', db='test', charset='utf8') cursor = conn.cursor() # 获取游标对象 def GetNow(localTime): """获取当前时间""" return time.strftime("%y-%m-%d %H:%M:%S", localTime) # 增删改SQL sql = str.format("insert into userinfo values(0,'{0}','{1}','{2}')", GetNow(time.localtime()), "wangyuyan", "王语嫣") rows = cursor.execute(sql) # 执行SQL语句 conn.commit() # 提交数据库连接,如果是增、删、改操作,则必须提交 print("执行成功") cursor.close() # 关闭游标对象 conn.close() # 关闭数据库连接 if rows > 0: print("操作成功") select查询测试: import pymysql # 导入pymysql库 import time # 创建数据库连接,注意密码参数passwd不要写成password conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='root', db='test', charset='utf8') cursor = conn.cursor() # 获取游标对象 def GetNow(localTime): """获取当前时间""" return time.strftime("%y-%m-%d %H:%M:%S", localTime) # 增删改SQL sql = str.format("select * from userinfo") rows = cursor.execute(sql) # 执行SQL语句 print("信息行数:", rows) result = cursor.fetchall() # 获取所有信息 cursor.close() # 关闭游标对象 conn.close() # 关闭数据库连接 print("为了保证数据安全故而数据个数为:", type(result)) for row in result: print(row[0], row[1], row[2], row[3])
聚合函数测试:
import pymysql # 导入pymysql库 import time # 创建数据库连接,注意密码参数passwd不要写成password conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='root', db='test', charset='utf8') cursor = conn.cursor() # 获取游标对象 def GetNow(localTime): """获取当前时间""" return time.strftime("%y-%m-%d %H:%M:%S", localTime) # 增删改SQL sql = str.format("select sum(id) from userinfo") rows = cursor.execute(sql) # 执行SQL语句 print("信息行数:", rows) result = cursor.fetchall() # 获取所有信息 cursor.close() # 关闭游标对象 conn.close() # 关闭数据库连接 print("为了保证数据安全故而数据个数为:", type(result)) print(result[0][0]) # 第一个数据的第一个值肯定就对对应返回的信息