Py一路向東之MySQL
阿新 • • 發佈:2018-08-05
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