pymysql的應用
一、裝包(前提)
py -m pip install pymysql;
D:\Python36\python.exe -m pip install pymysql
二、創建連接+游標的應用
1、簡單示例
#coding=utf-8
import pymysql
# 打開數據庫連接
conn = pymysql.connect( host = "127.0.0.1", port = 3306, user = "root", passwd = "1234qwer", db = "gloryroad", charset = "utf8") # 使用cursor()方法獲取數據庫的操作游標 cursor = conn.cursor() print(cursor) print(type(cursor))
2、創建數據庫
try: conn = pymysql.connect( host = "127.0.0.1", port = 3306, user = "root", passwd = "1234qwer" ) cur = conn.cursor() cur.execute("CREATE DATABASE IF NOT EXISTS grdb DEFAULT CHARSET utf8 COLLATE utf8_general_ci;") cur.close() conn.close() print("創建數據庫pythonDB成功! ") except pymysql.Error as e: print("Mysql Error %d: %s" %(e.args[0],e.args[1])) #COLLATE utf8_general_ci:大小寫不敏感
3、創建表
#coding=utf-8 import pymysql try: conn = pymysql.connect( host = "127.0.0.1", port = 3306, user = "root", passwd = "1234qwer") conn.select_db('grdb')# 選擇pythonDB數據庫 cur = conn.cursor()# 獲取游標 #如果所建表已存在,刪除重建 #cur.execute("drop table if exists User;") #執行建表sql語句 cur.execute('''CREATE TABLE User (id int(11) DEFAULT NULL,name varchar(255) DEFAULT NULL,password varchar(255) DEFAULT NULL,birthday date DEFAULT NULL)ENGINE=innodb DEFAULT CHARSET=utf8;''') cur.close() conn.close() print(u"創建數據表成功") except pymysql.Error as e: print("Mysql Error %d: %s" %(e.args[0],e.args[1]))
4、插入表數據
#coding=utf-8 import pymysql conn = pymysql.connect( host = "127.0.0.1", port = 3306, user = "root", passwd = "1234qwer", db = "grdb", charset = "utf8") #使用cursor()方法獲取數據庫的操作游標 cursor = conn.cursor() #插入一條數據 insert = cursor.execute("insert into user values(1,'Tom','123','1990-01-01')") print(u"添加語句受影響的行數:",insert) #另一種插入數據方法,通過格式字符串傳入值,此方式可以防止sql注入 sql = "insert into user values(%s,%s,%s,%s)" insert = cursor.execute(sql,(3,'lucy','efg','1993-02-01')) print(u"添加語句受影響的行數:",insert) #關閉游標 cursor.close() #提交事務 conn.commit() # 關閉數據庫連接 conn.close() print(u"sql語句執行成功!")
5、插入數據(含字符串拼接實例)
#coding=utf-8 import pymysql conn = pymysql.connect( host = "127.0.0.1", port = 3306, user = "root", passwd = "1234qwer", db = "grdb", charset = "utf8") # 使用cursor()方法獲取數據庫的操作游標 cursor = conn.cursor() # 插入一條數據 #insert = cursor.execute("insert into user values(1,'Tom','123','1990-01-01')") #print(u"添加語句受影響的行數:", insert) # 另一種插入數據方法,通過格式字符串傳入值,此方式可以防止sql注入 sql = "insert into user values(%s,%s,%s,%s)" j=0 for i in range(100,201): insert = cursor.execute(sql,(i,'lucy'+str(i),'efg'+str(i),str(1900+j)+'-02-01')) j+=1 # 關閉游標 cursor.close() # 提交事務 conn.commit()#提交事務后,不能回滾了 # 關閉數據庫連接 conn.close() print(u"sql語句執行成功!")
6、查詢表數據語句
6.1逐條獲取cursor.fetchone
#coding=utf-8 import pymysql import pymysql conn = pymysql.connect( host = "127.0.0.1", port = 3306, user = "root", passwd = "1234qwer", db = "grdb", charset = "utf8") # 使用cursor()方法獲取數據庫的操作游標 cursor = conn.cursor() cursor.execute("select * from user") while 1: res = cursor.fetchone() if res is None: # 表示已經取完結果集 break print(res) #將讀取到的時間格式化 # print(res[-1].strftime("%Y-%m-%d")) # 關閉游標 cursor.close() # 提交事務 conn.commit() # 關閉數據庫連接 conn.close() print("sql語句執行成功!") #cursor.fetchone 一條一條取數據,每條數據是元祖
6.2獲取n條數據
import pymysql conn = pymysql.connect( host = "127.0.0.1", port = 3306, user = "root", passwd = "1234qwer", db = "grdb", charset = "utf8") # 使用cursor()方法獲取數據庫的操作游標 cursor = conn.cursor() cursor.execute("select * from user") # 獲取游標處兩條數據 resTuple = cursor.fetchmany(2) print("結果集類型:",type(resTuple)) for i in resTuple: print(i) # 關閉游標 cursor.close() # 提交事務 conn.commit() # 關閉數據庫連接 conn.close() print("sql語句執行成功!")
7、更新數據
批量更新數據 #批量更新的代碼 import pymysql conn = pymysql.connect( host = "127.0.0.1", port = 3306, user = "root", passwd = "1234qwer", db = "grdb", charset = "utf8") # 使用cursor()方法獲取數據庫的操作游標 cursor = conn.cursor() #查詢一條數據 query = cursor.execute("select * from user") print("表中所有數據:") for i in cursor.fetchall(): print(i) # 批量更新數據 cursor.executemany("update user set password = %s where name=%s", [('tomx2x', 'tom'), ('Tomx2x', 'amy')]) # 查看更新后的結果 query = cursor.execute("select * from user where name='tom' or name='amy'") print("表中所有數據:") for i in cursor.fetchall(): print(i) # 關閉游標 cursor.close() # 提交事務 conn.commit() # 關閉數據庫連接 conn.close() print("sql語句執行成功!")
8、刪除數據
import pymysql conn = pymysql.connect( host = "127.0.0.1", port = 3306, user = "root", passwd = "1234qwer", db = "grdb", charset = "utf8") # 使用cursor()方法獲取數據庫的操作游標 cursor = conn.cursor() cursor.execute("select * from user") print("表中所有數據:") for i in cursor.fetchall(): print(i) # 刪除數據 delete = cursor.execute("delete from user where name='tom'") print("刪除語句影響的行數:",delete) print("刪除一條數據后,表中數據:") cursor.execute("select * from user") for i in cursor.fetchall(): print(i) # 關閉游標 cursor.close() # 提交事務 conn.commit() # 關閉數據庫連接 conn.close() print("sql語句執行成功!") cursor.close()
9、回滾事務(roll back)
回滾事務