Python MySQLdb庫的一點說明 01

2021-06-16 22:49:53 字數 1465 閱讀 9661

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 mysqldb連線資料庫

今天無事想弄下python做個gui開發,最近發布的是python 3k,用到了資料庫,通過搜尋發現有乙個mysqldb這樣的控制項,可以使用,就去官方看了下結果,沒有2.6以上的版本 file c python26 lib site packages mysqldb init py line 19...

Python MySQLdb庫的一點說明 02

coding utf8 from connectdb import connectdatabase connectdatabase是我自己定義的乙個連線資料庫的函式 import mysqldb def escape cnn connectdatabase cursor cnn.cursor nam...

Python MySqlDB 增刪修改資料庫

安裝後import mysqldb會出現 deprecationwarning the sets module is deprecated 這樣乙個警告,google之 原因是2.6不知sets這個模組,不過已經新增了set內建函式。找到mysqldb資料夾的中 init py,注釋掉from se...