python-mysql連線查詢學習筆記
阿新 • • 發佈:2019-02-03
1、資料庫資訊最好以字典格式放在public下的Config檔案下,方便呼叫
conn = pymysql.connect(**Config.sql_conn_dict)
cur = conn.cursor()
2、sql引數可引數化
param = (a,b)
sql ="select * from t_person_member WHERE ASSOCATION_ID=%s AND REAL_NAME LIKE %s"cur.execute(sql,param)
3、列印一條查詢資料
print(cur.fetchone())
4、列印所有查詢資料
print(cur.fetchall())
5、列印多條資料
print(cur.fetchmany(2))
6、關閉遊標
cur.close()
7、關閉資料庫連線
conn.close()
8、移動遊標到相對位置(正數表示當前位置往下移,負數表示當前位置往下移)
cur.scroll(2,mode="relative")
9、移動遊標到絕對位置
cur.scroll(2,mode="absolute")
10、修改資料庫時,需要提交才能有效,如果有多次修改資料庫,為防止某次修改失敗,資料需要回滾
try:
cur.excute(sql1)
cur.excute(sql2)
conn.commit() #一系列操作最後進行事務的提交
print('','True')
except Exception as e :
conn.rollback()
print(e,'False')
遇到的問題:
1、查詢時報1054錯誤
sql = "select * from t_person_member where REAL_NAME= %s" %REAL_NAME cur.execute(sql) 錯誤資訊:pymysql.err.InternalError: (1054, "Unknown column '芒果007' in 'where clause'")解決辦法:在%s加上'',原文連結https://blog.csdn.net/oguro/article/details/53381555
sql= "select * from t_person_member where REAL_NAME= '%s'" %REAL_NAME
2、配置資料庫時,未輸入charset='utf8',導致報
UnicodeEncodeError:'latin-1' codec can't encode characters in position 0-1: ordinal not in range(256)
解決辦法:新增上該語句,原文連結https://www.cnblogs.com/Skrillex/p/7093488.html