"Insert into table values"不发送数据
"Insert into table values" does not send data
我是新手,这是我的第一个问题。我希望你们能有所帮助。
如果我的问题格式有误,也欢迎大家评论。
代码非常简单。我有 DB 连接,2 个函数 - 一个用于打印,另一个用于选择我想执行多少个 SQL 查询并为这些查询输入。
想法是输入 SQL 个查询的数字 (INT) - 例如,2 然后在另一行中用户必须输入 2 SQL 个查询。
之后,call_table 函数将打印出当前 table status/situation/data.
例如 - 用户想要打印到控制台 table 数据(table 有 2 列,[name][college],varchar 类型)
Insert a number of SQL queries you want to execute: 1
Insert SQL statement:
select * from student
('ivan', 'ino')
('nena', 'fer')
('tomislav', 'ino')
('marko', 'fer')
('tomislav', 'ino')
('marko', 'fer')
当我尝试将一些值插入同一个 table 时,table 没有任何反应,数据未输入。
查询是 100% 正确的,因为我在 workbench 中对其进行了测试,我还尝试从该程序创建另一个 table,并且查询正常执行并创建了 table。
我没有收到任何错误。
代码如下:
import pymysql
db = pymysql.connect(host='localhost', user='root', passwd='123456', database='test')
mycursor = db.cursor()
def call_table(data_print):
for i in data_print:
print(i)
def sql_inputs(cursor):
container = []
no = int(input("Insert a number of SQL queries you want to execute: "))
for i in range(no):
container = [input("Insert SQL statement: \n").upper()]
for y in container:
cursor.execute(y)
sql_inputs(mycursor)
call_table(mycursor)
我做错了什么?
我尝试了更复杂的 SQL 查询,但插入 table 无效。
谢谢
您应该将查询附加到容器变量
import pymysql
db = pymysql.connect(host='localhost', user='root', passwd='123456', database='test')
mycursor = db.cursor()
def call_table(data_print):
for i in data_print:
print(i)
def sql_inputs(cursor):
container = []
no = int(input("Insert a number of SQL queries you want to execute: "))
for i in range(no):
container.append(input("Insert SQL statement: \n").upper())
for y in container:
cursor.execute(y)
sql_inputs(mycursor)
call_table(mycursor)
代码一切正常,你只是缺少 cursor.commit()
对于插入查询,python 中的游标提交默认为 false。
cursor.execute(y)
cursor.commit()
如果您完成了查询
db.close()
在程序的最后,我添加了 db.commit(),现在一切正常。
import pymysql
db = pymysql.connect(host='localhost', user='root', passwd='45fa6cb2',
database='ivan')
mycursor = db.cursor()
def call_table(data_print):
for i in data_print:
print(i)
def sql_inputs(cursor):
container = []
no = int(input("Insert a number of SQL queries you want to execute: "))
for i in range(no):
container.append(input("Insert SQL statement: \n").upper())
for y in container:
cursor.execute(y)
sql_inputs(mycursor)
db.commit()
call_table(mycursor)
我是新手,这是我的第一个问题。我希望你们能有所帮助。 如果我的问题格式有误,也欢迎大家评论。
代码非常简单。我有 DB 连接,2 个函数 - 一个用于打印,另一个用于选择我想执行多少个 SQL 查询并为这些查询输入。
想法是输入 SQL 个查询的数字 (INT) - 例如,2 然后在另一行中用户必须输入 2 SQL 个查询。 之后,call_table 函数将打印出当前 table status/situation/data.
例如 - 用户想要打印到控制台 table 数据(table 有 2 列,[name][college],varchar 类型)
Insert a number of SQL queries you want to execute: 1
Insert SQL statement:
select * from student
('ivan', 'ino')
('nena', 'fer')
('tomislav', 'ino')
('marko', 'fer')
('tomislav', 'ino')
('marko', 'fer')
当我尝试将一些值插入同一个 table 时,table 没有任何反应,数据未输入。 查询是 100% 正确的,因为我在 workbench 中对其进行了测试,我还尝试从该程序创建另一个 table,并且查询正常执行并创建了 table。
我没有收到任何错误。
代码如下:
import pymysql
db = pymysql.connect(host='localhost', user='root', passwd='123456', database='test')
mycursor = db.cursor()
def call_table(data_print):
for i in data_print:
print(i)
def sql_inputs(cursor):
container = []
no = int(input("Insert a number of SQL queries you want to execute: "))
for i in range(no):
container = [input("Insert SQL statement: \n").upper()]
for y in container:
cursor.execute(y)
sql_inputs(mycursor)
call_table(mycursor)
我做错了什么? 我尝试了更复杂的 SQL 查询,但插入 table 无效。
谢谢
您应该将查询附加到容器变量
import pymysql
db = pymysql.connect(host='localhost', user='root', passwd='123456', database='test')
mycursor = db.cursor()
def call_table(data_print):
for i in data_print:
print(i)
def sql_inputs(cursor):
container = []
no = int(input("Insert a number of SQL queries you want to execute: "))
for i in range(no):
container.append(input("Insert SQL statement: \n").upper())
for y in container:
cursor.execute(y)
sql_inputs(mycursor)
call_table(mycursor)
代码一切正常,你只是缺少 cursor.commit()
对于插入查询,python 中的游标提交默认为 false。
cursor.execute(y)
cursor.commit()
如果您完成了查询
db.close()
在程序的最后,我添加了 db.commit(),现在一切正常。
import pymysql
db = pymysql.connect(host='localhost', user='root', passwd='45fa6cb2',
database='ivan')
mycursor = db.cursor()
def call_table(data_print):
for i in data_print:
print(i)
def sql_inputs(cursor):
container = []
no = int(input("Insert a number of SQL queries you want to execute: "))
for i in range(no):
container.append(input("Insert SQL statement: \n").upper())
for y in container:
cursor.execute(y)
sql_inputs(mycursor)
db.commit()
call_table(mycursor)