Python介绍(15)

3.4 Mysql数据库与Excel的不同

拆表操作

Excel:

1.储存有限

2.呈现的是全部数据

Mysql:

1.去除重复信息

2.编号关联起来

3.分开

4.增加信息可以分别在每个表中增加

3.5 命令行操作数据库 (一)

使用命令行操作数据库 视频中:使用 sequel pro 进行操作(和在终端执行效果是一样的)

 

#创建数据库

In [ ]: create database Examination_copy;

#删除数据库

drop database Examination_copy;

#指定字符集和校对集,创建字符库

create database Examination_copy default charest utf8mb4 collate utf8mb4_general_ci;

#创建表格  (一般是设计好了的)

CREATE TABLE 'class'('id' int(11) unsigend NOT NULL AUTO_INCRMENT,'name' varchar(80) NOT NULL,PRIMARY KEY('Id'));

 

#3.5中补充关系型数据库

In [ ]: import json

data_1 = "{'a': 1,'b': 2,'c': 3}"

data_2 = '{"a": 1,"b": 2,"c": 3}'

j_data = json.lodas(data_2)

type(j_data)

3.6 命令行操作数据库 (二)

In [ ]:

先在终端,又在sequel pro

 

#创建表格  (一般是设计好了的)

In [ ]:

CREATE TABLE 'class'('id' int(11) unsigend NOT NULL AUTO_INCRMENT,'name' varchar(80) NOT NULL,PRIMARY KEY('Id'));

3.7 命令行操作数据库 (三)

#数据库中的小数位,也是按照01101010001存储

In [ ]:

0.4 = 01011010

Mysql小数转二进制

3转换为二进制为—— 11 整数部分 0.4转换为二进制 —— 0.50+0.251+0.125*1 结果只会无限逼近0.4

floot类型不会那么无限,但它仍是有误差的

DECMAL能保证浮点误差小点

时间格式

字符串

Mysql数据类型 http://www.runoob.com/mysql/mysql-data-types.html

 

3.8 命令行操作数据库 (四)

#创建表格  (在此基础上改动,即可创建出其他的表格)

In [ ]:

CREATE TABLE 'class'('id' int(11) unsigend NOT NULL AUTO_INCRMENT,'name' varchar(80) NOT NULL,PRIMARY KEY('Id'));

 

#插入数据

In [ ]:

insert into 'class'('id''name')

values(1,'高一一班')

 

#修改数据  高一三班 改为 高一五班

In [ ]:

update 'class'set'name' = '高一五班'

where 'name' = '高一三班';

#如果确定了id,操作删除数据:

update 'class'set'name' = '高一五班'

where 'id' = '6';

 

#删除操作

In [ ]:

delete from 'class'

where 'id' = 6

使用Python操作数据库

3.9 Python操作数据库 (一)

Windows中的MySQL软件 (在百度里找,安装)

使用Python操作数据库

In [13]: import MySQLdb

#需要安装

---------------------------------------------------------------------------

ModuleNotFoundError                       Traceback (most recent call last)

<ipython-input-13-dd22983d5391> in <module>()

----> 1 import MySQLdb

ModuleNotFoundError: No module named 'MySQLdb'

Python安装第三方库

1.pip; 举例: pip install pymysql

2.conda; 举例: conda install pymysql

3.10 Python操作数据库 (二)

In [ ]: import MySQLdb

#在终端操作:

#连接数据库

In [ ]:

db = MySQLdb.conect()

# conect(括号里传入配置信息)

In [ ]:

#先把信息放到字典里面:

DATABASE = {

'host':'localhost' #如果是远程数据库,此处为远程服务器的IP地址,也就是127.0.0.1

'database':'Examination',#在终端 database 有很多数据库,要默认一个,这里默认的是 Examination

'user':'root', #用户名 这里是root

'password':'wangwei'#密码

}

 

#可以直接写远程数据库的地址

In [ ]:

DATABASE = {

'host':'127.0.0.1'  ###

'database':'Examination',

'user':'root',

'password':'wangwei'

}

db = MySQLdb.conect()

 

# 一个配置信息写成字典,如果是多个要写成列表

In [ ]:

DATABASE = {

'host':'localhost'

'database':'Examination',

'user':'root',

'password':'wangwei'

}

# 此时db连接到了数据库

db = MySQLdb.conect('localhost','root','wangwei','Examination')

# 等价于:因为db括号中的位置不易记住,所以这么表示:

db = MySQLdb.conect(host = 'localhost',user = 'root',password = 'wangwei',db = 'Examination')

# 同时等价于

db = MySQLdb.conect(**DATABASE)

### db 就代表数据库

 

游标 使用游标操作数据库

In [ ]:

cursor = db.cursor()

查询语句

In [ ]:

sql = "select * from class"  #使用游标执行 sql 语句

cursor.execute(sql)

results = cursor.fetchall() # fetchall用游标获取结果 赋值给results

for row in results:  #(row:行)用for循环打印 results

print(row)

打印出来出现问题 是因为,在连接数据库时,没有按照字符集指定编码格式 需要再加一个参数: 'charaset':'utf8mb4'

In [ ]:

DATABASE = {

'host':'localhost'

'database':'Examination',

'user':'root',

'password':'wangwei'

'charaset':'utf8mb4'

}

# 此时db连接到了数据库

db = MySQLdb.conect('localhost','root','wangwei','Examination')

# 等价于:因为db括号中的位置不易记住,所以这么表示:

db = MySQLdb.conect(host = 'localhost',user = 'root',password = 'wangwei',db = 'Examination')

# 同时等价于

db = MySQLdb.conect(**DATABASE)

In [ ]:

sql = "select * from class"  #使用游标执行 sql 语句

cursor.execute(sql)

results = cursor.fetchall()    # fetchall用游标获取结果 赋值给results

for row in results:     #(row:行)用for循环打印 results

print(row)

#此时输出就不在是乱码了

根据上面做其他,限制长度等:

In [ ]:

sql = "select * from studend where id <20,limit 10"   #limit 限制数量

cursor.execute(sql)

results = cursor.fetchall()

for row in results:

print(row)

猜你喜欢

转载自blog.csdn.net/zxqjinhu/article/details/80833206