Python3分析MySQL数据库

1.在bash_profile中配置全局环境变量
终端open ~/.bash_profile打开环境变量配置文件,写入:

# mysql
export PATH=$PATH:/usr/local/mysql/bin

保存后退出,重新打开终端,使用命令mysql启动。

2.设置MySQL的root密码:

lishiqiangdeMacBook-Pro:~ bakufu$ MySQL -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.6.39 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('150428');
Query OK, 0 rows affected (0.01 sec)

创建数据库并查看已有数据库

mysql> CREATE DATABASE my_suppliers;
Query OK, 1 row affected (0.01 sec)

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| my_suppliers       |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.01 sec)

创建数据表先选择数据库

mysql> USE my_suppliers;
Database changed
mysql> CREATE TABLE IF NOT EXISTS Suppliers
    -> (Supplier_Name VARCHAR(20),
    -> Invoice_Number VARCHAR(20),
    -> Part_Number VARCHAR(20),
    -> Cost FLOAT,
    -> Purchase_Date DATE);
Query OK, 0 rows affected (0.03 sec)

如果数据库不存在数据表Suppliers ,命令就创建数据表Suppliers,含5个列(fields或attributes)。

  • VARCHAR型字段:可变字符,为字段中的数据分配20个字符。
  • CHAR型字段:用于设置有固定数量字符的字段,或者需要将字段中的值向右补齐到一个固定长度时。
  • ENUM型字段:用于字段取值是允许值列表(如small、medium、large)时。
  • BLOB型字段:用于字段内容是长度可变的大量文本时。
  • FLOAT型字段:浮点数字段保存浮点数近似值。本例包含货币值,所以用NUMERIC替代FLOAT型字段。
  • NUMERIC型字段:即定点确定值类型字段。不使用FLOAT,使用NUMERIC(11, 2),11是数值的精度,或者是为数值保存的数位总数,2是小数位数。
  • DATE型字段:用于保存日期('YYYY-MM-DD'),无时间部分。

验证数据表创建正确

显示列名、数据类型和值可否为NULL。

mysql> DESCRIBE Suppliers;
+----------------+-------------+------+-----+---------+-------+
| Field          | Type        | Null | Key | Default | Extra |
+----------------+-------------+------+-----+---------+-------+
| Supplier_Name  | varchar(20) | YES  |     | NULL    |       |
| Invoice_Number | varchar(20) | YES  |     | NULL    |       |
| Part_Number    | varchar(20) | YES  |     | NULL    |       |
| Cost           | float       | YES  |     | NULL    |       |
| Purchase_Date  | date        | YES  |     | NULL    |       |
+----------------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

创建新用户并授权

mysql> CREATE USER 'shiqiang'@'localhost' IDENTIFIED BY '150428';
Query OK, 0 rows affected (0.00 sec)

# 向新用户授权,使用两条命令
mysql> GRANT ALL PRIVILEGES ON my_suppliers.* TO 'shiqiang'@'localhost';
Query OK, 0 rows affected (0.01 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

4.2.1 向表中插入新记录

准备从CSV文件中将记录加载到数据表中。

Python会将数据从CSV文件插入到数据表,然后展示表中数据。
4db_mysql_load_from_csv.py

#!/usr/bin/env python3
import csv
import MySQLdb
import sys
from datetime import datetime, date

# CSV输入文件的路径和文件名
input_file = sys.argv[1]
# 连接MySQL数据库
con = MySQLdb.connect(host='localhost', port=3306, db='my_suppliers', \
user='root', passwd='150428')
c = con.cursor()
# 向Suppliers表中插入数据

你可能感兴趣的:(Python3分析MySQL数据库)