1. 程式人生 > >Py一路向東之MySQL

Py一路向東之MySQL

pytho 遊標 primary tle 引擎 管理系統 sql安裝 aaa select

一、概述

MySQL是一種關聯數據庫管理系統,關聯數據庫將數據保存在不同的表中。Python操作MySQL主要使用pymsql模塊和ORM框架 SQLAchemy。

二、MySQL安裝

MySQL官方下載地址:點這裏

windows安裝:

1、下載
MySQL Community Server 5.7.23

2、解壓
解壓至D:\mysql-5.7.23-winx64目錄中

3、初始化(默認不給root用戶設置密碼)
D:\>cd mysql-5.7.23-winx64
D:\mysql-5.7.23-winx64>cd bin
D:\mysql-5.7.23-winx64\bin>mysqld --initialize-insecure

4、啟動服務
D:\mysql-5.7.23-winx64\bin>mysqld.exe

5、客戶端連接服務器端
d:\mysql-5.7.23-winx64\bin>mysql.exe -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.23 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>

6、添加環境變量
【右鍵此電腦】--》【屬性】--》【高級系統設置】--》【高級】--》【環境變量】--》【在第二個內容框中找到 變量名為Path 的一行,雙擊】 --> 【新建】-->【將MySQL的bin目錄路徑復制進去】

7、註冊windows服務
D:\mysql-5.7.23-winx64\bin>mysqld.exe --install
Service successfully installed.

如想移除服務可跟參數--remove

8、使用net管理mysql服務
# 啟動MySQL服務
net start mysql

# 關閉MySQL服務
net stop mysql

Linux安裝:

安裝:
yum install mariadb-server -y
yum install mariadb -y

服務端啟動
systemctl start mariadb-server

三、數據庫基礎知識

1、數據庫基本管理

1、顯示數據庫
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

2、用戶管理
如果你需要添加 MySQL 用戶,你只需要在 mysql 數據庫中的 user 表添加新用戶即可。
創建用戶
    create user ‘用戶名‘@‘IP地址‘ identified by ‘密碼‘;
刪除用戶
    drop user ‘用戶名‘@‘IP地址‘;
修改用戶
    rename user ‘用戶名‘@‘IP地址‘; to ‘新用戶名‘@‘IP地址‘;;
修改密碼
    set password for ‘用戶名‘@‘IP地址‘ = Password(‘新密碼‘)
重載:在註意需要執行 FLUSH PRIVILEGES 語句。 這個命令執行後會重新載入授權表。
    FLUSH PRIVILEGES

用戶名@IP地址 表示用戶只能在該IP下才能訪問
用戶名@192.168.1.% 表示用戶只能在該IP段下才能訪問(通配符%表示任意)
用戶名@% 表示用戶可以再任意IP下訪問(默認IP地址為%)

3、授權管理
 授權jym用戶用於所有數據庫的所有權限
    grant all privileges on *.* to ‘jym‘@‘192.168.%.%‘;
 查看權限
    show grants for ‘jym‘@‘192.168.%.%‘;
 權限列表
     all privileges :除grant外的所有權限
     select :僅查權限
     select,insert  :查和插入權限
 ...
  對於目標數據庫
    數據庫名.*           數據庫中的所有
    數據庫名.表          指定數據庫中的某張表
    數據庫名.存儲過程     指定數據庫中的存儲過程
    *.*                所有數據庫

2、數據庫基本操作

1、創建數據庫
mysql> CREATE DATABASE pydb;

2、刪除數據庫
mysql> DROP DATABASE pydb;

3、使用數據庫
mysql> use pydb;

4、創建表
mysql> CREATE TABLE IF NOT EXISTS `py_tbl`(
    ->    `py_id` INT UNSIGNED AUTO_INCREMENT,
    ->    `py_title` VARCHAR(100) NOT NULL,
    ->    `py_author` VARCHAR(40) NOT NULL,
    ->    `submission_date` DATE,
    ->    PRIMARY KEY ( `py_id` )
    -> )ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.02 sec)

解析:
1.null表示空,非字符串,not null表示不可空。
2.AUTO_INCREMENT定義列為自增的屬性,一般用於主鍵,數值會自動加1。
3.PRIMARY KEY關鍵字用於定義列為主鍵。主鍵是一種特殊的唯一索引,不允許有空值,如果主鍵使用單個列,則它的值必須唯一,如果是多列,則其組合必須唯一。
4.ENGINE 設置存儲引擎,CHARSET 設置編碼。

5、刪除表
mysql> DROP TABLE py_tb1;

6、增
mysql> CREATE TABLE py_tb1(nid INT,name VARCHAR(20),password VARCHAR(64));
mysql> INSERT INTO py_tb1(nid,name,password) VALUES(1,‘aaa‘,‘123‘);

mysql> INSERT INTO py_tb1(nid,name,password) VALUES(2,‘bbb‘,‘123‘);

7、查
mysql> SELECT * FROM py_tb1;
+------+------+----------+
| nid  | name | password |
+------+------+----------+
|    1 | aaa  | 123      |
|    2 | bbb  | 123      |
+------+------+----------+
2 rows in set (0.00 sec)

8、刪
mysql> delete from py_tb1 where nid=2 and name=‘bbb‘;

9、改
mysql> update py_tb1 set name=‘newaaa‘ where nid=1;

四、pymysql

pymysql是python中操作mysql的模塊。

1、安裝

pip3 install pymysql

2、插入數據

import pymysql

# 創建連接
conn = pymysql.connect(host=‘127.0.0.1‘, port=3306, user=‘root‘, passwd=‘‘, db=‘pydb‘)
# 創建遊標
cursor = conn.cursor()

# 執行SQL,並返回受影響行數
ret = cursor.execute("INSERT INTO py_tbl (py_title, py_author, submission_date) VALUES (‘python‘, ‘admin‘, NOW());")

# 提交,不然無法保存新建或者修改的數據
conn.commit()

# 關閉遊標
cursor.close()
# 關閉連接
conn.close()

3、查詢數據

import pymysql.cursors

# 創建連接
conn = pymysql.connect(host=‘127.0.0.1‘, port=3306, user=‘root‘, passwd=‘‘, db=‘pydb‘)
# 創建遊標
cursor = conn.cursor()

sql = "SELECT * FROM py_tbl;"
# 執行SQL
cursor.execute(sql)

# 查詢數據庫單條數據
#ret = cursor.fetchone()
#print(ret)

# 查詢數據庫多條數據
ret = cursor.fetchall()
for data in ret:
    print(data)

# 關閉數據連接
conn.close()

查詢結果

(1, ‘MySQL‘, ‘root‘, datetime.date(2018, 8, 3))
(2, ‘python‘, ‘admin‘, datetime.date(2018, 8, 3))

4、pymysql主要方法

cursor():創建數據庫遊標。
execute():執行SQL語句。
commit():將數據庫的操作真正的提交到數據。
fetchone() :查詢單條數據。
fetchall() :查詢多條數據。
close() :關閉數據連接。

Py一路向東之MySQL