python MySQL的一些基本操作
一、基本操作
1、登入MySQL:
win+R 進入cmd:
輸入:mysql -uroot -p
再輸入自己設定的密碼:
就可以進入:
2、檢視mysql中所有資料庫(Database) : show databases; (以分號結尾)
3、建立資料庫(前面兩個單詞固定,後面一個為自己要建立的資料庫的名字):create database aaaaaa_bbbbbbb;
有這個說明建立成功
再次查詢,可以看到確實成功
4、刪除資料庫:drop databaseaaaaaa_bbbbbbb;
刪除成功:
5、切換進某個資料庫(第二個引數為要進入的資料庫):use pythondb;
切換成功:
6、可以檢視資料庫中所有表:show tables;
可以看到有一個表(剛開始沒有需要自己建立,下面會講):
7、刪除表格:drop table data;
刪除之後變成空的了。
建立一個表格並制定表頭(這裡先不講):
CREATE TABLE excel(
`province` varchar(40),
`city` varchar(30),
`nowConfirm` int ,
`newAdd` int ,
`total` int ,
`heal` int ,
`dead` int ,
`healRate` varchar(20) ,
`deadRate` varchar(20) ,
`time` varchar(20),
PRIMARY KEY (`province`,`time`)) DEFAULT CHARSET=utf8;
成功
8、查看錶格標表頭 :desc excel;
二、開始用python操作
為了方便講解我用了一個視覺化MySQL的軟體:Navicat
1、首先肯定是先建立一個
# 建立資料庫表 import pymysql # 如果是本機的話 host = 'localhost' #'127.0.0.1' # 下面兩個引數是自己安裝配置時的名字和密碼 user = 'root' passwd = 'root' # 開啟資料庫連線,不需要指定資料庫,因為需要建立資料庫 conn = pymysql.connect(host=host,user = user,passwd = passwd)#獲取遊標 cursor=conn.cursor() # 建立資料庫的語句 sql = 'CREATE DATABASE IF NOT EXISTS test_db DEFAULT CHARSET utf8 COLLATE utf8_general_ci;' #建立一個名為test_db資料庫 # 執行建立語句 cursor.execute(sql) # 下面的兩條語句不能反了 #先關閉遊標 cursor.close() #再關閉資料庫連線 conn.close() print('建立資料庫成功')
結果圖:
解釋一下某些引數:
# DEFAULT CHARACTER SET utf8 : 代表的是將該庫的預設編碼格式設定為utf8格式。
# COLLATE utf8_general_ci : 代表的是資料庫校對規則,utf8_bin將字串中的每一個字元用二進位制資料儲存,區分大小寫。
# utf8_genera_ci不區分大小寫,ci為case insensitive的縮寫,即大小寫不敏感。
2、接下來當然就是連結資料庫;
import pymysql
# 開啟資料庫連線,比上面多了兩個引數(為最後兩個),一個為要開啟的資料庫,一個為指定編碼格式 db = pymysql.connect("localhost", "root", "root", 'test_db', charset='utf8' ) # 使用cursor()方法獲取操作遊標 cursor = db.cursor() sql = "SELECT VERSION()" # 使用execute方法執行SQL語句,# 獲取到版本號 cursor.execute(sql) # 使用 fetchone() 方法獲取一條資料 data = cursor.fetchone() # 獲取到版本號 print("Database version : %s " % data) # 關閉游標 cursor.close() # 關閉資料庫連線 db.close()
執行結果:
3、建立一個數據表(table):create table (大小寫都行)
import pymysql # 建立tables,與表頭 # 開啟資料庫連線 db = pymysql.connect("localhost", "root", "root", "test_db", charset='utf8' ) # 使用cursor()方法獲取操作遊標 cursor = db.cursor() # 若excel的資料表已經存 則。 cursor.execute("DROP TABLE IF EXISTS excel") # 建立資料表SQL語句 sql = """create table excel ( id CHAR(20) NOT NULL, name CHAR(20), age INT, sex CHAR(1), number FLOAT )""" # 執行sql語句 cursor.execute(sql) # 關閉遊標 cursor.close() # 關閉資料庫連線 db.close()
建立成功:
4、插入資料:
import pymysql # 資料庫插入操作 # 開啟資料庫連線 db = pymysql.connect("localhost", "root", "root", "test_db", charset='utf8' ) # 使用cursor()方法獲取操作遊標 cursor = db.cursor() # SQL 插入語句 sql = """INSERT INTO excel(id, name, age, sex, number) VALUES ('1114444', 'Mohan', 20, 'M', 2000)""" try: # 執行sql語句 cursor.execute(sql) # 提交到資料庫執行 db.commit() print('成功') except Exception as e: print('出錯') # Rollback in case there is any error db.rollback() # 關閉資料庫連線 db.close()
效果:
這個程式沒有去重,所以沒執行一次都會加入,不管重複不。
# 記住%s 必須再兩邊加上''否則會出錯
也可以用這樣:後面的只可以用變數代替:
sql = "INSERT INTO EMPLOYEE(id,name, age, sex, number)VALUES ('%s', '%s', '%s', '%s', '%s' )" % ('1314', 'hahaha', 34, 'm', 2400)
5、表的查詢:
import pymysql # 資料庫查詢操作 # 開啟資料庫連線 db = pymysql.connect("localhost", "root", "root", "test_db", charset='utf8' ) # 使用cursor()方法獲取操作遊標 cursor = db.cursor() # SQL 查詢語句, 當其number大於1500時 sql = "SELECT * FROM excel \ WHERE number > %s" % (1500) try: # 執行SQL語句 cursor.execute(sql) # cursor.fetchone() 獲取紀錄列表,返回一條,讀完一條會往下 # 獲取所有記錄列表,返回全部 results = cursor.fetchall() for row in results: id = row[0] name = row[1] age = row[2] sex = row[3] number = row[4] # 列印結果 print("id=%s,name=%s,age=%s,sex=%s,number=%s" % \ (id, name, age, sex, number )) except Exception as e: print(e) print("Error: unable to fecth data") # 關閉遊標 cursor.close() # 關閉資料庫連線 db.close()
我自己加了一條
6、更新資料
import pymysql # 開啟資料庫連線 db = pymysql.connect("localhost", "root", "root", "test_db", charset='utf8' ) # 使用cursor()方法獲取操作遊標 cursor = db.cursor() # SQL 更新語句, 給女性的number加300 sql = "UPDATE excel SET number = number + 300 WHERE sex = '%c'" % ('w') try: # 執行SQL語句 cursor.execute(sql) # 提交到資料庫執行 db.commit() except: # 發生錯誤時回滾 db.rollback() # 關閉遊標 cursor.close() # 關閉資料庫連線 db.close()
7、刪除
import pymysql # 刪除操作 # 開啟資料庫連線 db = pymysql.connect("localhost", "root", "root", "test_db", charset='utf8' ) # # 使用cursor()方法獲取操作遊標 cursor = db.cursor() # SQL 刪除number<2100資料的語句 sql = "DELETE FROM excel WHERE number < %s" % (2100) try: # 執行SQL語句 cursor.execute(sql) # 提交修改 db.commit() except: # 發生錯誤時回滾 db.rollback() # 關閉遊標 cursor.close() # 關閉連線 db.close()