python - 使用 python 将许多变量附加到 MySQL

标签 python mysql

insert_basic = '""' + '"INSERT INTO info VALUES (' + "'" + testid + "','" + username + "','" + fullname + "','" + firstnumber + "','" + secondnumber + "','" + floatnumber + "','" + posts + "','" + country + '","' + bio + '","' + link + '");'
cur.execute(insert_basic)
try: 
    db.commit()
except:
    db.rollback()
cur.execute("""SELECT * FROM basic;""")
print cur.fetchall()

您好,我做了很多研究,但我似乎无法获得提交到 SQL 的正确语法。有些变量是整数,有些是字符串,其中一个是 float 。

最佳答案

这就是 parameterized queries用于:

parameters = (testid, username, fullname, firstnumber, secondnumber, floatnumber, posts, country, bio, link)
query = """
    INSERT INTO 
        info 
    VALUES 
        (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"""
cur.execute(query, parameters)

当您这样做时,您将让 MySQL 数据库驱动程序自动处理 Python 和 MySQL 之间的类型转换

而且,您也在保护自己免受 SQL injection attacks 的侵害。这很容易应用于您的初始代码,您可以在其中字符串连接查询。

<小时/>

我还会在这种情况下明确指定表列名称:

INSERT INTO 
    info 
    (column_name1, column_name2, ...)
VALUES
    (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)

关于python - 使用 python 将许多变量附加到 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44376123/

相关文章:

mysql - sort_buffer_size 与 innodb_sort_buffer_size

python - 有人可以解释一下如何在 python 上为 selenium 编写 xpath 吗?

python - 我有一个 DataFrame,其中包含一些间隔的第一个和最后一个数字。我怎样才能得到每个数字在每个间隔中的次数?

python - 类型错误 : unsupported operand type(s) for +: 'float' and 'datetime.timedelta'

php - Ajax 调用不起作用(Phonegap、Mysql、PHP)

php - CodeIgniter 3.0 发生数据库错误

python - 如何使用 repoze.who(和 bottle.py)处理注销?

python - Pandas to_sql() 性能 - 为什么这么慢?

MySQL 搜索非英文字符 - o = ø 等

mysql - 使用子字符串条件连接表