相关疑难解决方法(0)

MySQL参数化查询

我很难使用MySQLdb模块将信息插入到我的数据库中.我需要在表中插入6个变量.

cursor.execute ("""
    INSERT INTO Songs (SongName, SongArtist, SongAlbum, SongGenre, SongLength, SongLocation)
    VALUES
        (var1, var2, var3, var4, var5, var6)

""")
Run Code Online (Sandbox Code Playgroud)

有人可以帮我解决这里的语法吗?

python mysql bind-variables

76
推荐指数
5
解决办法
14万
查看次数

Python最佳实践,最安全,可连接MySQL并执行查询

什么是在mysql上运行查询的最安全的方法,我知道MySQL和SQL注入涉及的危险.

但是我不知道如何运行查询以防止注入其他用户(webclients)可以操作的变量.我曾经写过自己的转义函数,但显然这是"未完成".

我应该使用什么以及我应该如何使用它来查询并通过python安全地插入MySQL数据库而不会冒险注入mysql?

python mysql sql-injection

56
推荐指数
2
解决办法
4万
查看次数

Python相当于mysql_real_escape_string,用于将字符串安全地导入MySQL?

是否有Python的Python等价物mysql_real_escape_string

我试图直接从Python插入一些MySQL数据库的字符串,并继续被字符串中的引号绊倒.

mysql_string = "INSERT INTO candidate (name, address) VALUES  " 
for k, v in v_dict.iteritems():
    mysql_string += " ('" + v_dict['name'] + "', '" + v_dict['address'] + "'), "
mysql_string += ";"
cursor.execute(mysql_string)
Run Code Online (Sandbox Code Playgroud)

我已经尝试了re.escape()但是它逃脱了字符串中的每个非字母数字字符,这不是我需要的东西 - 我只需要在这个实例中转义单引号(加上一般其他任何可能使MySQL绊倒的东西).

我想可以手动执行此操作,但是在Python中有更聪明的方法吗?

python mysql

17
推荐指数
3
解决办法
3万
查看次数

使用python生成SQL语句

我需要从html文件生成一个insert语句列表(对于postgresql),是否有可用于python的库来帮助我正确转义并引用名称/值?在PHP中,我使用PDO进行转义和引用,是否有任何等效的python库?

编辑:我需要生成一个带有sql语句的文件,以便以后执行

python sql postgresql psycopg2

10
推荐指数
3
解决办法
4万
查看次数

如何在Python3中将输入转义为MySQL数据库?

如何在Python3中将输入转义为MySQL数据库?我正在使用PyMySQL并且工作正常,但是当我尝试做类似的事情时:

cursor.execute("SELECT * FROM `Codes` WHERE `ShortCode` =  '{}'".format(request[1]))
Run Code Online (Sandbox Code Playgroud)

如果字符串有'或不起作用".我也尝试过:

cursor.execute("SELECT * FROM `Codes` WHERE `ShortCode` =  %s",request[1])
Run Code Online (Sandbox Code Playgroud)

这个问题是库(PyMySQL)使用Python2.x的格式化语法%,它不再起作用了.我也发现了这种可能的解决方案

conn.escape_string()
Run Code Online (Sandbox Code Playgroud)

这里,但我不知道在哪里添加此代码.这就是我得到的:

import pymysql
import sys
conn = pymysql.connect( host   = "localhost",
            user   = "test",
            passwd = "",
            db     = "test")
cursor = conn.cursor()
cursor.execute("SELECT * FROM `Codes` WHERE `ShortCode` =  {}".format(request[1]))

result = cursor.fetchall()

cursor.close()
conn.close()
Run Code Online (Sandbox Code Playgroud)

编辑:我解决了!在PyMySQL中,正确的方法是这样的:

import pymysql
import sys
conn = pymysql.connect(host="localhost",
            user="test",
            passwd="",
            db="test")
cursor = conn.cursor()
text = …
Run Code Online (Sandbox Code Playgroud)

mysql sql python-3.x pymysql

9
推荐指数
2
解决办法
1万
查看次数

有没有安全的方法来参数化MySQL查询中的数据库名称?

我正在写一个小的python脚本来帮助我自动创建我的个人项目的mysql数据库和相关帐户.此脚本的一部分是将数据库名称作为字符串,然后创建数据库的函数.

def createDB(dbConn, dbName):
    import MySQLdb
    c = dbConn.cursor()
    query = """CREATE DATABASE %s;""";
    c.execute(query, (dbName,))
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为MySQL的CREATE DATABASE请求数据库的不带引号的名称,如

  CREATE DATAbASE test_db
Run Code Online (Sandbox Code Playgroud)

但我的代码尝试安全地将用户提供的数据库名称插入查询中,创建:

  CREATE DATABASE 'test_db'
Run Code Online (Sandbox Code Playgroud)

并且你得到"你的MySQL语法接近测试时遇到问题".

即使这是供个人使用,我真的不想直接将用户提供的字符串插入任何类型的查询中.它反对我的宗教.有没有一种安全的方法可以将用户提供的数据库名称插入到python(或任何语言)的mySQL查询中,以确保用户输入test_db; DROP some_other_db;会被拒绝或正确转义?

python mysql mysql-python sql-parametrized-query

2
推荐指数
1
解决办法
849
查看次数

如何在字符串python中的引号前插入\ backslash

我想在我的字符串中的每个引号之前插入一个\,使用pymysql将其插入到我的SQL数据库中.如果我不转义引号,我无法在数据库中插入字符串.

举个例子:

str ="好的我准备好了"

一定是 :

str ="好吧我准备好了"

但是打印str必须是:"好吧我已经准备好了"

为了执行它我做了:

str = str.replace("'", "\'")
Run Code Online (Sandbox Code Playgroud)

但它不起作用,我仍然无法在我的数据库中插入我的字符串.我有错误消息:

您的SQL语法有错误; 查看与您的MySQL服务器版本相对应的手册,以获得正确的语法,使用附近的语义搜索软件可以支持从直观的聊天机器人到第1行的"aarc"的所有内容.

我也会打印我的字符串,看不到\

有谁知道我该怎么办?

python escaping python-2.7

-3
推荐指数
2
解决办法
7381
查看次数