python - 带有python格式的mysql连接器
问题描述
我写了一个简单的脚本,向用户显示一个字母,他必须写一个以相同字母开头的人名,但我在使用变量自动补偿列名时遇到问题......有什么建议吗?
如何用变量替换列名let
?
import random
import mysql.connector
while True:
letters = "AB"
let = random.choice(letters)
print(let)
human = input("Human : ")
db = mysql.connector.connect(host = 'localhost',
user = 'root',
password = '',
database = 'test')
mycs = db.cursor()
mycs.execute(" SELECT * FROM human WHERE {} = {}".format(let,human))
data = mycs.fetchall()
if data:
print("Name exists")
else:
print("Name does not exist")
mycs.close()
错误:
B
Human : brad
Traceback (most recent call last):
File "C:\Users\Administrator\Desktop\t.py", line 16, in <module>
mycs.execute(" SELECT * FROM human WHERE {} = {}".format(let,human))
File "C:\Program Files\Python39\lib\site-packages\mysql\connector\cursor.py", line 568, in execute
self._handle_result(self._connection.cmd_query(stmt))
File "C:\Program Files\Python39\lib\site-packages\mysql\connector\connection.py", line 686, in cmd_query
result = self._handle_result(self._send_cmd(ServerCmd.QUERY, query))
File "C:\Program Files\Python39\lib\site-packages\mysql\connector\connection.py", line 573, in _handle_result
raise errors.get_exception(packet)
mysql.connector.errors.ProgrammingError: 1054 (42S22): Unknown column 'brad' in 'where clause'
解决方案
您只需要将常量放在单引号之间的查询中:
(" SELECT * FROM human WHERE {} = '{}'".format(let,human))
推荐阅读
- javascript - 我在sails js中的sails-hook-cron npm包中遇到错误
- android - 使用绑定订阅
- python - 使用 ManToManyField() 在 Django 中创建购物车
- c# - 以编程方式将 DataGridViews 添加到 Form
- android - Xamarin Forms 使用 SwipView 从 ListView 中删除项目
- elasticsearch - 如何在布尔查询中只选择一个分支
- node.js - 如何在对象数组中查找对象?
- testing - 如何进行 TDD,例如 SQL
- javascript - 输入数据后,仍保留在输入字段 ReactJS
- java - Spring Kafka Consumer 打印不正确的标题