python - 使用 MySQLdb 从 Python 中获取 MySQL

标签 python mysql python-2.7 mysql-python

我正在尝试使用 MySQLdb python 包向 MySQL 数据库添加值。我的一些列不能为空,我正在努力寻找一种方法来检查在尝试将数据添加到我的表之前必须存在哪些列值。 目前我必须解析一个文件,提取一些键值对,计算出这些应该添加到哪些表,然后使用以下方法添加它们:

cursor.execute("""INSERT INTO %s (%s) VALUES (\"%s\")""" %(tbl, cols, vals)

我可以确保以正确的顺序添加列,并且可以获得自动递增 ID 以链接不同的表。我想做的是针对每个表,检查它是否包含不可为 null 的列,然后在必要时相应地修改输入值,然后再尝试将值添加到表中。关于如何执行此操作的任何建议/更好的想法?

最佳答案

您可以在 MySQL 中测试 INFORMATION_SCHEMA.COLUMNS 表以确定列是否接受 NULL 值。

SELECT `IS_NULLABLE`
FROM INFORMATION_SCHEMA.`COLUMNS`
WHERE `TABLE_SCHEMA` = 'SchemaName'
AND `TABLE_NAME` = tbl
AND `COLUMN_NAME` = col
; # returns YES/NO

您应该改进 cursor.execute(stmt, [params]) 语法以传入参数,而不是在文本 sql 中对其进行硬编码。这将更加可靠:

sql = "INSERT INTO %s (%s)" % (tbl, col)
sql += " VALUES(%s)"
cursor.execute(sql, [val])
connection.commit()

MySQL Docs for cursor.execute

关于python - 使用 MySQLdb 从 Python 中获取 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42414966/

相关文章:

mysql - 如何进行 Access 内连接

python - Six.u() 取消转义 HTML 字符串

python - 尝试使用字典中的键时出现 "list indices must be integers"错误

python - 按数值排序字典

python - 在 Python 中返回一个角色中的对象并在 QML 中获取另一个对象的引用

mysql - 结合 SUM 和 WHERE - 没有得到我期望的结果

python - 在 matplotlib 中将错误栏添加到 3D 图

php - php中fpdf的utf8解码

python - Python mimetypes.init() 是一个过时的函数吗?

python - 如何更改用户代理 urllib2