想使用python编程通过用户命令在MYSQL表中插入数据吗
我想通过用户命令在mysql表中插入数据。但我不明白为什么不能执行代码。代码示例:想使用python编程通过用户命令在MYSQL表中插入数据吗,python,mysql,Python,Mysql,我想通过用户命令在mysql表中插入数据。但我不明白为什么不能执行代码。代码示例: user_name= input("What is your name?:\n") user_phone= input("What is your phone:\n") user_city= input("Your city:\n") myCursor.execute("insert into information(name,phone, city) values(user_name, user_phone,
user_name= input("What is your name?:\n")
user_phone= input("What is your phone:\n")
user_city= input("Your city:\n")
myCursor.execute("insert into information(name,phone, city) values(user_name, user_phone, user_city);")
print("Insert successfully")
为了使用execute,您需要定义以下变量
import cx_Oracle
DSN_TNS = cx_Oracle.makedsn(IP, PORT, SID)
DB_CRED = cx_Oracle.connect(USERNAME, PASSWORD, DSN_TNS)
curs = DB_CRED.cursor()
user_name= input("What is your name?:\n")
user_phone= input("What is your phone:\n")
user_city= input("Your city:\n")
sql_query = "insert into information(name,phone, city) values('{0}','{1}','{2}')".format(user_name, user_phone, user_city)
curs.execute(sql_query)
DB_CRED.commit()
DB_CRED.close()
切勿使用字符串格式或连接将参数放入SQL语句中。如果值来自未经处理的用户输入,则尤其如此。查看运行脚本并输入
c')时发生的情况;将表格信息--
放到您所在城市:提示符处。始终使用方法的parameters或args参数将参数传递给查询。@shmee如果您的语句有意义,请您指导如何相应地修改我的答案。尤其是cx_Oracle提供了几种安全的参数替换方法。通常,在符合DB-API 2的软件包中,可以创建一个带有占位符的SQL字符串,并将一系列值或一个字典连同SQL字符串一起传递给execute
方法。例如,cursor.execute(“INSERT INTO table(col1,col2)VALUES(:1,:2)”,('value1','value2'))
看看我在其他评论中链接的官方文档,并在中看到一些更详细的示例。但是,请注意,OP被标记为mysql
。游标的paramstyle因驱动程序而异。切勿使用字符串格式或串联将参数放入SQL语句中。如果值来自未经处理的用户输入,则尤其如此。查看运行脚本并输入c')时发生的情况;将表格信息--
放到您所在城市:提示符处。始终使用方法的parameters或args参数向查询传递参数。请不要使用答案中的配方。它们会使您的代码容易受到SQL注入攻击。改用占位符和参数替换。具体的外观取决于您使用的驱动程序,但它始终遵循链接副本的模式。
import pymysql
con = pymysql.connect("Host", "Username", "Password", "Database")
cur = con.cursor()
#taken from sample displayed
user_name = input("What is your name?:\n")
user_phone = int(input("What is your phone number:\n"))
user_city = input("Your city:\n")
cur.execute("insert into information(name,phone, city) values('{}', {},
'{}')".format(user_name, user_phone, user_city))
con.commit()
con.close()