"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)