Python3操作MySQL数据库
一.安装PyMySQL
cmd
pip install pymysql
查看pymysql安装是否成功
安装pymysqlpip show pymysql
二.创建MySQL表
CREATE TABLE 'users'{
'id' INT(11) NOT NULL AUTO_INCREMENT, //id值,非空,递增
'email' VARCHAR(255) COLLATE utf8_bin NOT NULL, //email 非空
'password' VARCHAR(255) COLLATE utf8_bin NOT NULL,
PRIMARY KEY('id')
} ENGINE=INNODB //设置表的存储引擎,一般常用InnoDB和MyISAM;InnoDB可靠,支持事务;MyISAM高效不支持全文检索
DEFAULT CHARSET=utf8 //设置默认的编码,防止数据库中文乱码
COLLATE=utf8_bin
AUTO_INCREMENT=1 ;
三.Python操作MySQL
3.1 插入数据
import pymysql.cursors
// 1. 连接MySQL数据库
connection=pymysql.connect(host='127.0.0.1',port=3306,user='root',password='XXXX',db='数据库名称',charset='utf8mb4',cursorclass=pymysql.cursors.DictCursor)
// 2. 通过cursor创建游标
cursor=connection.cursor()
// 3. 创建数据表
cursor.execute("create table users(id int,email varchar(255),password(255))")
// 4. 创建sql语句,插入一条数据,并执行
sql="insert into 'users' ('email','password') values ('guoguoXXXX@163.com','123456')"
cursor.execute(sql)
//5. 修改查询条件的数据
cursor.execute("update users set password='654321' where email='guoguoXXXX@163.com'")
//6. 删除查询条件的数据
cursor.execute("delete from users where password='654321'")
//7. 关闭游标
cursor.close()
// 8. 提交SQL
connection.commit()
//9. 关闭数据库连接
connection.close()
cursor() 方法创建数据库游标
execute() 方法执行SQL语句
commit() 将数据库的操作真正的提交到数据
3.2插入多条数据
// 插入一条数据
sqli="insert into user values(%s,%s,%s)"
cursor.execute(sqli,('2','email@email.com','123456'))
// 插入多条数据
sqli="insert into user values(%s,%s,%s)"
cursor.executemany(sqli,[
('3','email1@email.com','123456'),
('4','email2@email.com','123456')
('5','email3@email.com','123456')
])
cur.close()
conn.commit()
conn.close()
executemany()——可以一次插入多条值,执行单挑sql语句,但是重复执行参数列表里的参数,返回值为受影响的行数。
3.3查询数据
import pymysql.cursors
// 连接MySQL 数据库
connection=pymysql.connect(host='127.0.0.1',port=3306,user='root',password='XXXX',db='数据库名称',charset='utf8mb4',cursorclass=pymysql.cursors.DictCursor)
// 通过cursor创建游标
cursor=connection.cursor()
// 执行数据查询
sql="SELECT 'id','password' FROM 'users' WHERE 'email'='guoguo@163.com'"
cursor.execute(sql)
// 查询数据库单条数据
result=cursor.fetchone()
print(result)
print("---------------------华丽分割线-----------------------")
// 执行数据查询
sql="SELECT 'id','password' FROM 'users'"
cursor.execute(sql)
// 查询数据库多条数据
result=cursor.fetchall()
for data in result:
print(data)
// 关闭数据连接
connection.close()
fetchone()用于查询单条数据;
fetchall()用于查询多条数据;
close()关闭数据连接。
运行结果:
{'password': '123456', 'id': 1}
-----------华丽分割线------------
{'password': '123456', 'id': 1}
{'password': '654321', 'id': 2}
四.MySQL的基本操作
$ mysql -u root -p(有密码时)
$ mysql -u root (无密码时)
mysql> show databases; //查看当前所有的数据库
mysql>use test; // 作用于test数据库
mysql>show tables; //查看test库下面的表
// 创建user表,name和password两个字段
mysql>CREATE TABLE user (name VARCHAR(20),password VARCHAR(20));
// 向user表内插入若干条数据
mysql>insert into user values('Tom','12345');
Query OK, 1 row affected (0.08 sec)
mysql>insert into user values('Alen','7875');
Query OK, 1 row affected (0.05 sec)
// 查看user表的数据
mysql>select * from user;
+------+----------+
| name | password |
+------+----------+
| Tom | 12345 |
| Alen | 7875 |
+------+----------+
3 rows in set (0.01 sec)
// 删除name等于Tom的数据
mysql>delete from user where name='Tom';
// 修改name等于Alen的password为111111
mysql>update user set password='111111' where name='Alen';
// 删除数据表
drop table table_name
// 在固定位置插入一列(在col_name1列后面插入)
alter table table_name add column col_name varchar(20) not null after col_name1
// 在数据表的最后一列插入
alter table table_name add column col_name varchar(20) not null
//每次进入数据库设置字符编码(防止中文乱码)
set charset 'gbk';