在 Python 中的 mysql.execute() 语句中使用变量(对象)
Using variable(objects) inside a mysql.execute() statement in Python
我的 python 项目的以下代码似乎不起作用
import mysql.connector as sql
cxn=sql.connect(user='adithyan',password='vinod123',database='workout2')
cursor=cxn.cursor()
while True:
try:
l=[ ]
studentid =int(input("Please enter your student_id"))
a = 'select * from student_info where Student_ID = %studentid'
cursor.execute(a)
for i in cursor:
l.append(i)
except:
print("Student_id not found try again")
MySQL 连接没有问题, select 语句也没有问题(即当我独立 运行 在 python) 但是
看来我无法在 SQL 查询中使用 python 中的变量。另外求推荐
如果可能,任何其他选择!!
干杯,
阿迪斯安
P.S:-这是我的作业 NOT。为了学习 MySQL 我看 YouTube,在我的编码过程中,我想做一个简单的 python 项目。那是我遇到这个错误的时候
如果 studentid
是一个字符串,您的 sql 语句(或 a
变量)应该是这样的:
a =''' select * from student_info where Student_ID = '{studentid}'; '''.format(
studentid=studentid
)
如果它是整数(或数值),则不需要在 {studentid}
:
周围加任何引号
a =''' select * from student_info where Student_ID = {studentid}; '''.format(
studentid=studentid
)
复杂度取决于给定输入的类型。如果您确定输入的类型,即如果它是字符串或数字,您可以直接采用 Khan's Answer,具有更好的字符串格式。几个例子:
# Method 1(f-string) - if a number
a = f'select * from student_info where Student_ID = {studentid}'
# if string
a = f"select * from student_info where Student_ID = '{studentid}'"
否则,如果给我们的输入类型是动态的,即可以是字符串或数字,这里有一个适用于此的单行代码:
a = 'select * from student_info where Student_ID = ' + (studentid if studentid.isnumeric() else "'"+studentid+"'")
只有在没有给出其他条件的情况下,即只有串联不会产生不必要的并发症时,上述情况才有可能。
您也可以使用 f-string:
a = f'''select * from student_info where Student_ID = {(studentid if studentid.isnumeric() else "'"+studentid+"'")}'''
我的 python 项目的以下代码似乎不起作用
import mysql.connector as sql
cxn=sql.connect(user='adithyan',password='vinod123',database='workout2')
cursor=cxn.cursor()
while True:
try:
l=[ ]
studentid =int(input("Please enter your student_id"))
a = 'select * from student_info where Student_ID = %studentid'
cursor.execute(a)
for i in cursor:
l.append(i)
except:
print("Student_id not found try again")
MySQL 连接没有问题, select 语句也没有问题(即当我独立 运行 在 python) 但是 看来我无法在 SQL 查询中使用 python 中的变量。另外求推荐 如果可能,任何其他选择!!
干杯, 阿迪斯安
P.S:-这是我的作业 NOT。为了学习 MySQL 我看 YouTube,在我的编码过程中,我想做一个简单的 python 项目。那是我遇到这个错误的时候
如果 studentid
是一个字符串,您的 sql 语句(或 a
变量)应该是这样的:
a =''' select * from student_info where Student_ID = '{studentid}'; '''.format(
studentid=studentid
)
如果它是整数(或数值),则不需要在 {studentid}
:
a =''' select * from student_info where Student_ID = {studentid}; '''.format(
studentid=studentid
)
复杂度取决于给定输入的类型。如果您确定输入的类型,即如果它是字符串或数字,您可以直接采用 Khan's Answer,具有更好的字符串格式。几个例子:
# Method 1(f-string) - if a number
a = f'select * from student_info where Student_ID = {studentid}'
# if string
a = f"select * from student_info where Student_ID = '{studentid}'"
否则,如果给我们的输入类型是动态的,即可以是字符串或数字,这里有一个适用于此的单行代码:
a = 'select * from student_info where Student_ID = ' + (studentid if studentid.isnumeric() else "'"+studentid+"'")
只有在没有给出其他条件的情况下,即只有串联不会产生不必要的并发症时,上述情况才有可能。 您也可以使用 f-string:
a = f'''select * from student_info where Student_ID = {(studentid if studentid.isnumeric() else "'"+studentid+"'")}'''