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