1、PyMySQL的安裝
pymysql是在 Python3版本中用于連接 mysql服務器的一個庫,Python2中是使用mysqldb,
pip3 install PyMySQL
2、使用python操作mysql資料庫
(1)、python連接mysql資料庫
import pymysql
db = pymysql.connect("資料庫ip","用戶","密碼","資料庫") # 打開資料庫連接
cursor = db.cursor() # 得到一個可以執行SQL陳述句的游標物件
cursor.execute("SELECT VERSION()") # 使用 execute() 方法執行 SQL 查詢
data = https://www.cnblogs.com/caiyongliang/p/cursor.fetchone() # 使用 fetchone() 方法獲取單條資料
print ("Database version : %s " % data)
db.close() # 關閉資料庫連接
(2)、 創建表操作
import pymysql
# 打開資料庫連接
db = pymysql.connect("localhost","testuser","test123","TESTDB" )
# 使用 cursor() 方法創建一個游標物件 cursor
cursor = db.cursor()
# 使用 execute() 方法執行 SQL,如果表存在則洗掉
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
# 使用預處理陳述句創建表
sql = """CREATE TABLE EMPLOYEE (
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT )"""
cursor.execute(sql)
# 關閉資料庫連接
db.close()
(3)、對資料進行增刪改查
import pymysql
# 一、打開資料庫連接
conn=pymysql.connect(host='localhost',user='testuser',password="test123",database='TESTDB')
# 二、獲取游標
cur = conn.cursor(pymysql.cursors.DictCursor) # cur游標 cur資料庫運算子(相當于檔案運算子-- 檔案句柄f)
# 三、對資料的增刪改查
# 查
ret = cur.execute('select * from books') # 使用 execute() 方法執行 SQL 查詢; execute方法中放mysql查詢陳述句;ret 影響行數,在這里表示查到的資料行數
for i in range(ret): # ret為資料行數
row1 = cur.fetchone() # 每次取一條資料
print(row1)
row2 = cur.fetchmany(3) # 按照指定引數取n條
print(row2)
row3 = cur.fetchall() # 取所有,過于浪費記憶體
print(row3)
# 增 改 刪 提交 (增刪改相似,使用相應的mysql陳述句即可)
# insert update delete conn.commit()
cur = conn.cursor() # cur游標 cur資料庫運算子
cur.execute('insert into books values("學python從開始到放棄","cai","家里蹲大學出版社",50,"2019-6-1")') # 在execute方法中放增刪改相關的mysql陳述句
conn.commit() # 進行提交,提交到資料庫執行
(4)、操作檔案
## file檔案 檔案內容
'''
學python從開始到放棄|cai|家里蹲大學出版社|50|2018-7-1
學mysql從開始到放棄|ling|城鄉工業出版社|60|2018-6-3
學html從開始到放棄|liu|城鄉工業出版社|20|2018-4-1
學css從開始到放棄|liangliang|城鄉工業出版社|120|2018-5-2
學js從開始到放棄|yongliang|城鄉工業出版社|100|2018-7-30
'''
import pymysql
conn=pymysql.connect(host='localhost',user='testuser',password="test123",database='TESTDB')
cur = conn.cursor()
sql = 'insert into books values(%s,%s,%s,%s,%s)'
with open('file',encoding='utf-8') as f:
for line in f:
try:
lst = line.strip().split('|')
cur.execute(sql,lst) # execute('insert into books values(%s,%s,%s,%s,%s)'["學python從開始到放棄","cai","家里蹲大學出版社",50,"2018-7-1")'])
conn.commit()
except:
conn.rollback() # 如果發生錯誤則回滾
cur.close() # 關閉游標
conn.close() # 關閉連接
3、SQL注入
# 登陸注冊 + 資料庫 表 userinfo
import pymysql
conn=pymysql.connect(host='localhost',user='testuser',password="test123",database='TESTDB')
cur = conn.cursor()
name = input('user:')
passwd = input('password:')
sql = "select * from userinfo where username = %s and password = %s;"
print(sql)
ret = cur.execute(sql,(name,passwd))
if ret: # ret = 1
print('登陸成功')
else: # ret = 0
print('登陸失敗')
# sql注入問題
select * from userinfo where username = 'xxx' or 1=1 ; # -- ' and password =
小結:
1.建立連接conn
2.獲取游標 cur
3.執行 sql execute(sql , (可迭代型別的引數集))
sql是查 --- 只涉及檔案的讀操作
fetchone()
fetchmany(n)
fetchall()
增刪改 --- 涉及到檔案的寫操作
conn.commit()
4.關閉游標和連接
cur.close()
conn.close()
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/209849.html
標籤:Python
