中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

pymysql怎么使用cur.fetchall()和cur.fetchone()

發布時間:2020-07-27 10:20:47 來源:億速云 閱讀:285 作者:小豬 欄目:開發技術

這篇文章主要為大家展示了pymysql怎么使用cur.fetchall()和cur.fetchone(),內容簡而易懂,希望大家可以學習一下,學習完之后肯定會有收獲的,下面讓小編帶大家一起來看看吧。

我就廢話不多說了,大家還是直接看代碼吧!

import pymysql,hashlib
結果:單條結果 {'id': 1, 'name': '打車', 'phone': '132453'}

sql = 'select * from zxj'
def op_mysql(sql,many=True):
 db_info = {'user': 'jxz', 'password': '123456',
  'host': '118*******', 'db': 'jxz', 'port': 3306, 'charset': 'utf8',
  'autocommit': True}
 conn = pymysql.connect(**db_info) # 建立連接
 cur = conn.cursor(pymysql.cursors.DictCursor) # 游標
 cur.execute(sql) # 執行sql語句,insert 、update 、delete
 if many:
 result = cur.fetchall()
 print('多條',result)
 else:
 result = cur.fetchone() # {''}
 print('dantiao',result)
 cur.close()
 conn.close()
 return result
op_mysql(sql,many=False) # 傳入sql, 默認為true

=================================
md5加鹽2
def md5(s,salt=''):
 new_s = str(s) + salt
 m = hashlib.md5(new_s.encode())
 return m.hexdigest()```

補充知識:python pymssql使用時,使用fetchone獲取的值怎么在while里操作多條數據

項目描述:

想把status狀態為1的數據查出來然后再通過while 遍歷update 數據,為了清楚測試時候的數據。

剛開始的代碼是這樣的。

#coding:utf-8
import pymssql
def connect():
connect=pymssql.connect((‘x.x.x.x'),‘x',‘x',‘x')

cursor = connect.cursor() # 創建游標
sql001='select *from xxxxx where xxxxx=273and Status=1 order by sysno desc'#查詢語句
cursor.execute(sql001)
row=cursor.fetchone()#讀取查詢結果
print(row)
if row==None:
 print("沒有查到數據")
else:

 while row:
 print("sysno=%s" % (row[0]))
 cursor.execute("update xxxxx set Status=-1 where SysNo=%d", row[0]) # 執行語句\
 connect.commit()
 print(row)
 #cursor.execute(sql001)
 row=cursor.fetchone()
 #print(row)

connect()

報錯信息:

File “D:/JiCaiZhuanTi/Case/test.py”, line 22, in connect
row=cursor.fetchone()
File “src\pymssql.pyx”, line 507, in pymssql.Cursor.fetchone
pymssql.OperationalError: Statement not executed or executed statement has no resultset

自己查了不少文章,以前沒有對這塊有所涉及,因為本人是菜鳥,用到哪就看到哪。也仔細看了fetchone() 、fetchall() 還有pymssql的對數據庫的基本炒作。看了好久在最后靈光一閃理解錯誤在哪里了。

錯誤出在while里的connect.commit()后直接又row=cursor.fetchone()而while里是(返回單個的元組,也就是一條記錄(row),如果沒有結果 則返回 None)因為我上一個查詢是update語句,更新sql語句不會返回resultset,所以會報錯。

然后我就這樣改了一下,:

while row:
print(“sysno=%s” % (row[0]))
cursor.execute(“update xxxxx set Status=-1 where SysNo=%d”, row[0]) # 執行語句
connect.commit()
print(row)
cursor.execute(sql001)
row=cursor.fetchone()

在獲取sql執行獲取結果的 row=cursor.fetchone()我再去調用一次查詢再次獲取想要的數據。

我覺得應該有更好的辦法,就是再第一次獲取查詢結果把所需要的sysno都拿出來,然后再while,這樣可以減少對數據庫的調用。

以上就是關于pymysql怎么使用cur.fetchall()和cur.fetchone()的內容,如果你們有學習到知識或者技能,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

西乡县| 凌海市| 司法| 永安市| 贵阳市| 阳原县| 虞城县| 阳山县| 凌海市| 光山县| 宝坻区| 蒙城县| 柯坪县| 绥中县| 资阳市| 平罗县| 辛集市| 磐安县| 泸州市| 万源市| 江孜县| 纳雍县| 蒙山县| 富阳市| 高淳县| 拜泉县| 屏东市| 桐梓县| 塔河县| 噶尔县| 宝丰县| 托克逊县| 湄潭县| 东台市| 墨脱县| 福鼎市| 阳曲县| 怀集县| 伊春市| 新安县| 乐昌市|