安裝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完成資料的查詢操作
importpymysql
#建立連線物件
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():
(line)
#關閉游標
cursor.close()
#關閉連線
conn.close()
pymysql完成對資料的增刪改
importpymysql
#建立連線物件
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 importconnect
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 不需要帶引號
#列印受影響的行數
(count)
#獲取查詢的結果
#result = cs1.fetchone()
result =cs1.fetchall()
#列印查詢的結果
(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...