基于python3使用MySQL,写SQL语句时候涉及到传参问题,踩过一些坑,网上大多博客写的比较混乱,难以形成常用体系。所以记录下使用python3调用SQL语句的固定写法,并给出几个常用demo。
首先要明确以下几点:
- 防止参数化注入:不要将数据参数通过format或者%s的方式,直接连接在SQL语句上;(具体含义可直接搜索)
- cursor.execute():传入的参数应该为 “sql, (arg1,)” 或者 “sql, (arg1,arg2,…)” 。
SQL语句写法:
- 数据参数通过cursor.execute()传入;
- 表名、列(键)名等数据库固有的名称,如果希望进行参数化传递,可以使用format或者%s的方式,直接连接在SQL语句上。
原因:cursor.execute()会为参数加上引号,SQL语句中,参数数值可以有引号,但表名、列(键)名等不能有引号。
import MySQLdb
# 连接数据库
def local_db_connect():
db = MySQLdb.connect(host='localhost', port=3306, user='root', passwd='xxxxxxxxx', db='news', charset='utf8') # 更改成自己的数据库配置
cursor = db.cursor()