Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
想使用python编程通过用户命令在MYSQL表中插入数据吗_Python_Mysql - Fatal编程技术网

想使用python编程通过用户命令在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,

我想通过用户命令在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_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()