当前位置:Gxlcms > 数据库问题 > Python连接MySQL数据库执行sql语句时的参数问题

Python连接MySQL数据库执行sql语句时的参数问题

时间:2021-07-01 10:21:17 帮助过:16人阅读

变量替代的时候还有一种写法:

cur.execute(“SELECT * FROM %s WHERE city = %s” %city)

  

前面代码使用了逗号,这里使用了百分号%。两者区别在于变量的解释方式。使用逗号,变量是作为execute的参数传入的,由MySQLdb的内置方法把变量解释成合适的内容。使用百分号%则是用Python编译器对%s执行相应的替代,这种方法是有漏洞的,有些时候(比如包含某些特殊字符的时候)不能正常解析,甚至会有注入漏洞。一般情况下都要把变量作为execute的参数传入。

3.使用字典dict类型传递变量

sql = “INSERT INTO user VALUES(%(username)s, %(password)s, %(email)s)”

value = {“username”:zhangsan,

“password”:123456,

“email”:123456@ouvps.com}

cur.execute(sql, value)

  

上面这种方法适合字段比较多的时候,变量顺序不会错。

附上我写的脚本代码相关部分:

def get_apkpath(apk_md5):
    try:
        connection = MySQLdb.connect(user="***",passwd="***",host="192.168.***.***",db="***")
    except:
        print "Could not connect to MySQL server."
        exit( 0 )

    cursor = connection.cursor()
    cursor.execute( "SELECT a.id,a.md5,CONCAT(b.`from_name`,‘/‘,b.`suffix`,‘/‘,a.`md5`) FROM apk_sec a,apk_from b WHERE a.`apk_from_id`=b.`id` AND a.md5 = %s", apk_md5)  #注意不要加引号
    print "Rows selected:", cursor.rowcount

    for row in cursor.fetchall():
        print "note : ", row[0], row[1], row[2]        
    cursor.close()
    return row[2]

  

Python连接MySQL数据库执行sql语句时的参数问题

标签:比较   字符   .exe   beijing   insert   for   get   value   今天   

人气教程排行