python操作mysql方法和常見問題

2021-09-22 06:58:26 字數 1477 閱讀 1543

sudo easy_install mysql-python

1

#!/usr/bin/env python2#

coding=utf-8

3import

mysqldb

4 conn = mysqldb.connect('

localhost

','root

','rootpass

','oj

',charset='

utf8')

5 cur = conn.cursor()

連線資料庫時要注意資料庫編碼,不然一堆編碼問題很愁人的~最好統一使用utf8編碼。

執行sql語句

1 sql_content = "

select * from user"2

cur.execute(sql_content)

3 data =cur.fetchall()

4for i in

data:

5print i

可以用fetchone來獲取一條結果。如果是插入資料,要執行commit操作,不然資料不會被寫入資料庫。最好是執行完所有的sql語句之後再commit,實踐證明,這樣會帶來很大的速度提公升。

插入或更新資料有兩種方法

1.拼接sql語句:

sql_content = "

insert into table(key1,key2,key3) values (%s,%s,%s)

"%(value1,value2,value3)

cur.execute(sql_content)

2.用問號替代

sql_content = "

insert into table(key1,key2,key3) values (?,?,?)

"cur.execute(sql_content,(value1,value2,value3))

如果value的值存在不確定性,那麼上面兩條語句存在sql注入風險。

例如,如果value是一段html**,html**中如果存在引號(但引號或者雙引號),如果不加處理,那麼sql語句就將被截斷,將會引發插入錯誤。

如果value中存在英文逗號,將會造成前面的key和後面的value不對應,也不能正確插入資料。

如果value中存在反斜線\,那麼在python中反斜線後面的資料將被轉義,如果不處理插入的話將會造成字元丟失或者其他不可遇見的結果。

因為在sql中和在python中有好多含有特殊含義的符號,如果不能很好的處理的話將會出現好多問題,幸好mysqldb模組給我們提供了乙個escape_string方法,用這個方法能自動處理好上面的問題,特別方便。

此外,不建議一次插入多個資料,因為一次插入多個資料有可能造成key和value不能對應,昨天因為這個問題糾結了一下午。最後將一條sql語句拆成多條語句,也就是一次插入乙個value才將問題解決

Python操作MySQL資料庫的方法

pymsql pymsql是python中操作mysql的模組,其使用方法和mysqldb幾乎相同。安裝 pip3 install pymysql 使用操作 1 執行sql import pymysql 建立連線 conn pymysql.connect host 127.0.0.1 port 33...

python如何操作mysql

工具 mysql.connector和mysqldb,pymysql據說也不錯,沒試過 1.mysql.connector介紹 推薦 是mysql官方提供的python連線mysql資料庫的驅動程式 是純python實現的,由oracle維護 相較於mysqldb模組來說,其支援python3,而m...

Python操作mysql步驟

建立連線 conn connect host localhost port 3306,database jing dong user root password mysql charset utf8 建立游標 cs1 conn.cursor sql select from goods cs1.exe...