检查并安装pymysql
为了使用数据库,首先应该连接到数据库,使用函数connect,该函数有多个参数,而具体使用哪个参数取决于底层数据库的类型 :
1、connect函数的常用参数:user(用户名)、password(用户密码)、host(主机名)、 database(数据库名)、port(端口)。
connect函数返回连接对象,这个对象表示目前和数据库的会话。
connect函数返回的连接对象具有几个常用的方法:
- close()-关闭连接,关闭后,连接对象和它的游标均不可用
- commit()-提交事务,对数据库做的数据更改等事务只有提交才会生效
- rollback()-回滚事务,撤销所有未提交的事务
- cursor()-返回连接的游标对象
2、建立数据库连接后,就可以执行SQL查询并检查结果,这些都是通过游标cursor来完成的。
游标用来执行命令的方法:
- callproc():用来执行存储过程,接收的参数为存储过程名和参数列表,返回值为受影响的行数
- execute():执行单条sql语句(可能带有参数),返回值为受影响的行数
- close():关闭游标
连接数据的两种方式,首先导入模块【 import pymysql】:
import pymysql
# 连接数据操作方式一
conn = pymysql.connect(user='root',password='123456',host='192.168.8.110',port=3306,database='test1',charset='utf8')
print(conn)
# 打印结果:<pymysql.connections.Connection object at 0x027E1D10> 表示成功
import pymusql
# 连接数据库操作方式二
# 创建连接数据库的配置文件
config = {'user':'root',
'password':'123456',
'host':'192.168.8.110',
'port':3306,
'database':'test1',
'charset':'utf8'}
# 连接数据库
conn = pymysql.connect(**config)
print(conn)
# 打印结果:<pymysql.connections.Connection object at 0x021F1D90> 表示连接成功。
创建游标,执行创建数据表
cursor = conn.cursor() # 为已连接的数据库创建游标,为后续执行SQL语句做准备
ml = 'create table user(id int,uname varchar(20),password int);'
cursor.execute(ml) # 用创建的游标执行单条SQL语句
用游标执行删除数据表信息
# 删除数据库信息SQL语句
delete_info = 'delete from user;'
rows=cursor.execute(delete_info) # 游标执行SQL语句返回影响行数
print(rows)
调用存储过程
# 调用存储过程
cursor.callproc('add_user') # 调用存储过程,使用 callproc('存储过程名称')
简单的查询并提取查询结果集中的一个值
select_passwd = 'select password from user where id = 1;'
cursor.execute(select_passwd) # 用游标cur来调用execute 执行上面的sql语句
result = cursor.fetchall() # 返回上一条语句sql.execute(select_passwd)的结果,返回一个元组,元组的第一个元素为包含密码的元组
print(result)
pwd = result[0][0] # 获取id=1对应的密码值,以字符串形式返回。
print(pwd)
操作结束一定要提交事务和关闭连接。
数据库操作SQL脚本:
-- 创建数据库test1
create database test1 default character set utf8 collate utf8_general_ci;
-- 使用数据库
use test1;
-- 查看数据库表
show TABLES;
-- 查看表详细内容
desc user;
-- 添加用户信息存储过程
Delimiter//
create procedure add_user()
BEGIN
declare id int;
declare uname varchar(20);
set id = 1;
set uname = 'zhangsan';
while id <= 100000 DO
insert into user values(id,concat(uname,id),FLOOR(RAND()*500000 + 500000));
set id=id+1;
end while;
end//
Delimiter;
SELECT * from user;
以上代码,完整如下:
#encoding:utf8
import pymysql
# 连接数据操作方式一
conn = pymysql.connect(user='root',password='123456',
host='192.168.8.110',port=3306,
database='test1',charset='utf8')
print(conn)
# 打印结果:<pymysql.connections.Connection object at 0x027E1D10> 表示成功
cursor = conn.cursor() # 为已连接的数据库创建游标,为后续执行SQL语句做准备
ml = 'create table user(id int,uname varchar(20),password int);'
cursor.execute(ml) # 用创建的游标执行单条SQL语句
# 删除数据库信息SQL语句
delete_info = 'delete from user;'
rows=cursor.execute(delete_info) # 游标执行SQL语句返回影响行数
print(rows) # 100000
# 调用存储过程
cursor.callproc('add_user') # 调用存储过程,使用 callproc('存储过程名称')
# 查询id=1的用户密码
select_passwd = 'select password from user where id = 1;'
cursor.execute(select_passwd) # 用游标cur来调用execute 执行上面的sql语句
result = cursor.fetchall() # 返回上一条语句sql.execute(select_passwd)的结果,返回一个元组,元组的第一个元素为包含密码的元组
print(result) # ((662866,),)
pwd = result[0][0] # 获取id=1对应的密码值,以字符串形式返回。
print(pwd) # 662866
conn.commit() # 提交事务
conn.close() # 连接关闭
cursor.close() # 游标关闭
MySQL随机生成六位数字方法:
SELECT CEILING(RAND()*500000+500000);
SELECT FLOOR(RAND()*500000 + 500000);
附加学习参考文章: