python入门(十七)python连接mysql数据库
Posted suitcases
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python入门(十七)python连接mysql数据库相关的知识,希望对你有一定的参考价值。
mysql 数据库:关系型数据库
mysql:互联网公司
sqllite:小型数据库,占用资源少,手机里面使用
oracle:银行、保险、以前外企。
sybase:银行+通信
互联网公司
key:value
mongodb:磁盘上
redis:内存数据库,持久化
memchache:内存数据库
mysql -uroot -p密码
装完了之后,cmd下输入mysql命令,需要将安装目录下的bin目录( mysql.exe 所在的目录)加入到path中
装完了之后,cmd下输入mysql命令,需要将安装目录下的bin目录( mysql.exe 所在的目录)加入到path中
本地连接
mysql -uroot -p
mysql -h127.0.0.1 -utest -p密码 -P3306
远程连接
mysql -hIP地址 -u用户名 -p密码 -P3306
查看都有哪些库
show databases;
选择一个库
mysql> use gloryroad
Database changed
Database changed
查看当前在哪个库下
select database();
select database();
查看库里面有哪些表
show tables;
查看表里有哪些数据
select * from testdata;
创建表
create table test(id int,name varchar(20));
插入数据
mysql> insert into test values(1,"吴老师");
Query OK, 1 row affected (0.01 sec)
mysql> insert into test values(2,"李老师");
Query OK, 1 row affected (0.02 sec)
mysql> insert into test values(3,"张老师");
Query OK, 1 row affected (0.03 sec)
select * from test;
Query OK, 1 row affected (0.01 sec)
mysql> insert into test values(2,"李老师");
Query OK, 1 row affected (0.02 sec)
mysql> insert into test values(3,"张老师");
Query OK, 1 row affected (0.03 sec)
select * from test;
删除某条记录
delete from test where id =1;
修改某条记录
update test set id = 100 where name="李老师";
建库
create database testman;
删库
drop database testman;
删除所有数据,表还在
mysql> delete from test;
Query OK, 2 rows affected (0.02 sec)
mysql> select * from test;
Empty set (0.00 sec)
Query OK, 2 rows affected (0.02 sec)
mysql> select * from test;
Empty set (0.00 sec)
删除数据并且删除表结构
drop table test;
查看建表语句
show create table studentinfo;
外键
create table grade(
ID int auto_increment not null,
stuID varchar(20),
course varchar(20) not null,
score tinyint(4) default 0,
primary key (ID),
key idx_stuid(stuID),
CONSTRAINT FK_ID FOREIGN KEY(stuID) REFERENCES studentInfo(student_id)
)engine=innodb character set utf8 comment "学生成绩表";
ID int auto_increment not null,
stuID varchar(20),
course varchar(20) not null,
score tinyint(4) default 0,
primary key (ID),
key idx_stuid(stuID),
CONSTRAINT FK_ID FOREIGN KEY(stuID) REFERENCES studentInfo(student_id)
)engine=innodb character set utf8 comment "学生成绩表";
外键:
grade表中插入的stuID字段的数据必须在studentInfo
的student_id中存在,不在,则不让插入。
删除studentInfo中的student_id数据,那么grade中相关
的stuID数据必须先删除,才能成功。
grade表中插入的stuID字段的数据必须在studentInfo
的student_id中存在,不在,则不让插入。
删除studentInfo中的student_id数据,那么grade中相关
的stuID数据必须先删除,才能成功。
studentInfo
student_id:2007123 #不能直接删除,grade表中
删除2007123,就可以删除
student_id:2007123
grade:
stuID:2007124 插入失败
stuID:2007123 插入成功--》把删掉
student_id:2007123 #不能直接删除,grade表中
删除2007123,就可以删除
student_id:2007123
grade:
stuID:2007124 插入失败
stuID:2007123 插入成功--》把删掉
python连接mysql需要装pymysql包
pip3 install PyMySQL
py -3 -m pip install pymysql
py -3 -m pip install pymysql
写一堆参数连接数据
获取游标
执行sql
关闭游标
关闭连接
获取游标
执行sql
关闭游标
关闭连接
#encoding=utf-8
import pymysql
import random
def insertData():
conn = pymysql.connect(
host = "127.0.0.1",
port = 3306,
user = "root",
passwd = "123456",
db = "my_test",
charset = "utf8")
cur = conn.cursor()
conn.select_db(‘my_test‘)
courseList = [‘python‘, ‘java‘, ‘mysql‘, ‘linux‘, ‘接口测试‘, ‘性能测试‘, ‘自动化测试‘,‘数据结构与算法‘]
for i in range(1, 101):
student_id = ‘201603‘ + ‘0‘ * (3 - len(str(i))) + str(i)
name = random.choice([‘Lucy‘,‘Tom‘,‘Lily‘,‘Amy‘,‘Dave‘,‘Aaron‘,‘Baron‘]) + str(i)
tel = ‘1‘ + str(random.choice([3, 5, 7, 8])) + str(random.random())[2:11]
sex = random.choice([‘女‘, ‘男‘])
stuinfo_sql = "insert into studentInfo(student_id, name, sex, tel, AdmissionDate) \
values(‘%s‘, ‘%s‘, ‘%s‘, ‘%s‘, date_sub(now(),interval %s day))" \
%(student_id, name, sex, tel, random.randint(90, 120))
cur.execute(stuinfo_sql)
conn.commit()
for j in courseList:
grade_sql = "insert into grade(stuID,course,score) values(‘%s‘,‘%s‘,%s)" %(student_id,j,random.randint(80, 100))
cur.execute(grade_sql)
conn.commit()
cur.close()
conn.commit()
conn.close()
insertData()
print (u"数据插入结束!")
import pymysql
import random
def insertData():
conn = pymysql.connect(
host = "127.0.0.1",
port = 3306,
user = "root",
passwd = "123456",
db = "my_test",
charset = "utf8")
cur = conn.cursor()
conn.select_db(‘my_test‘)
courseList = [‘python‘, ‘java‘, ‘mysql‘, ‘linux‘, ‘接口测试‘, ‘性能测试‘, ‘自动化测试‘,‘数据结构与算法‘]
for i in range(1, 101):
student_id = ‘201603‘ + ‘0‘ * (3 - len(str(i))) + str(i)
name = random.choice([‘Lucy‘,‘Tom‘,‘Lily‘,‘Amy‘,‘Dave‘,‘Aaron‘,‘Baron‘]) + str(i)
tel = ‘1‘ + str(random.choice([3, 5, 7, 8])) + str(random.random())[2:11]
sex = random.choice([‘女‘, ‘男‘])
stuinfo_sql = "insert into studentInfo(student_id, name, sex, tel, AdmissionDate) \
values(‘%s‘, ‘%s‘, ‘%s‘, ‘%s‘, date_sub(now(),interval %s day))" \
%(student_id, name, sex, tel, random.randint(90, 120))
cur.execute(stuinfo_sql)
conn.commit()
for j in courseList:
grade_sql = "insert into grade(stuID,course,score) values(‘%s‘,‘%s‘,%s)" %(student_id,j,random.randint(80, 100))
cur.execute(grade_sql)
conn.commit()
cur.close()
conn.commit()
conn.close()
insertData()
print (u"数据插入结束!")
select count(*) from studentinfo;
以上是关于python入门(十七)python连接mysql数据库的主要内容,如果未能解决你的问题,请参考以下文章
1024程序员节|MySQL从入门到精通高级篇(二十七)外连接和内连接如何进行查询优化呢?join的原理了解一波
《Python编程从入门到实践》——学习python的第十七天