Python操作MySQL資料庫

2022-06-16 15:27:13 字數 4218 閱讀 7057

安裝pymysql第三方包:

sudo pip3 install pymysql
說明:

pymysql的使用:

匯入 pymysql 包

import pymysql

建立連線物件

呼叫pymysql模組中的connect()函式來建立連線物件,**如下:

conn=connect(引數列表)

* 引數host:連線的mysql主機,如果本機是'localhost'

* 引數port:連線的mysql主機的埠,預設是3306

* 引數user:連線的使用者名稱

* 引數password:連線的密碼

* 引數database:資料庫的名稱

連線物件操作說明:

獲取游標物件

獲取游標物件的目標就是要執行sql語句,完成對資料庫的增、刪、改、查操作。**如下:

#

呼叫連線物件的cursor()方法獲取游標物件

cur =conn.cursor()

游標操作說明:

pymysql完成資料的查詢操作

import

pymysql

#建立連線物件

conn = pymysql.connect(host='

localhost

', port=3306, user='

root

', password='

mysql

',database='

python

', charset='

utf8')

#獲取游標物件

cursor =conn.cursor()

#查詢 sql 語句

sql = "

select * from students;"#

執行 sql 語句 返回值就是 sql 語句在執行過程中影響的行數

row_count =cursor.execute(sql)

print("

sql 語句執行影響的行數%d

" %row_count)

#取出結果集中一行資料, 例如:(1, '張三')

#print(cursor.fetchone())

#取出結果集中的所有資料, 例如:((1, '張三'), (2, '李四'), (3, '王五'))

for line in

cursor.fetchall():

print

(line)

#關閉游標

cursor.close()

#關閉連線

conn.close()

pymysql完成對資料的增刪改

import

pymysql

#建立連線物件

conn = pymysql.connect(host='

localhost

', port=3306, user='

root

', password='

mysql

',database='

python

', charset='

utf8')

#獲取游標物件

cursor =conn.cursor()

try:

#新增 sql 語句

#sql = "insert into students(name) values('劉璐'), ('王美麗');"

#刪除 sq l語句

#sql = "delete from students where id = 5;"

#修改 sql 語句

sql = "

update students set name = '王鐵蛋' where id = 6;"#

執行 sql 語句

row_count =cursor.execute(sql)

print("

sql 語句執行影響的行數%d

" %row_count)

#提交資料到資料庫

conn.commit()

except

exception as e:

#回滾資料, 即撤銷剛剛的sql語句操作

conn.rollback()

#關閉游標

cursor.close()

#關閉連線

conn.close()

說明:防止sql注入

什麼是sql注入?

使用者提交帶有惡意的資料與sql語句進行字串方式的拼接,從而影響了sql語句的語義,最終產生資料洩露的現象。

如何防止sql注入?

sql語句引數化

防止sql注入的示例**:

from pymysql import

connect

defmain():

find_name = input("

請輸入物品名稱:")

#建立connection連線

conn = connect(host='

localhost

',port=3306,user='

root

',password='

mysql

',database='

jing_dong

',charset='

utf8')

#獲得cursor物件

cs1 =conn.cursor()

#非安全的方式

#輸入 ' or 1 = 1 or ' (單引號也要輸入)

#sql = "select * from goods where name='%s'" % find_name

#print("""sql===>%s<====""" % sql)

## 執行select語句,並返回受影響的行數:查詢所有資料

#count = cs1.execute(sql)

#安全的方式

#構造引數列表

params =[find_name]

#執行select語句,並返回受影響的行數:查詢所有資料

count = cs1.execute("

select * from goods where name=%s

", params)

#注意:

#如果要是有多個引數,需要進行引數化

#那麼params = [數值1, 數值2....],此時sql語句中有多個%s即可

#%s 不需要帶引號

#列印受影響的行數

print

(count)

#獲取查詢的結果

#result = cs1.fetchone()

result =cs1.fetchall()

#列印查詢的結果

print

(result)

#關閉cursor物件

cs1.close()

#關閉connection物件

conn.close()

if__name__ == '

__main__':

main()

說明:導包

import pymysql

建立連線物件

pymysql.connect(引數列表)

獲取游標物件

cursor =conn.cursor()

執行sql語句

row_count = cursor.execute(sql)

獲取查詢結果集

result = cursor.fetchall()

將修改操作提交到資料庫

conn.commit()

回滾資料

conn.rollback()

關閉游標

cursor.close()

關閉連線

conn.close()

python操作mysql查詢資料

首先需要連線資料庫,然後才查詢出資料。例如下表名字為 sinauser iduse id use name11 db12 2db233 db3class database def init self self.conn mysqldb.connect 連線資料庫 host 連線你要取出資料庫的ip,...

python操作MySQL資料庫

堅持每天學一點,每天積累一點點,作為自己每天的業餘收穫,這個文章是我在吃飯的期間寫的,利用自己零散的時間學了一下python操作mysql,所以整理一下。我採用的是mysqldb操作的mysql資料庫。先來乙個簡單的例子吧 import mysqldb try conn mysqldb.connec...

Python操作Mysql資料庫

coding utf8 author yangjing import mysqldb 查詢。def select host user root password port 3306,db sql connect mysqldb.connect host host,user user,passwd p...