Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.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 &引用;在表中插入“值”;不发送数据_Python_Sql Insert_Mysql Python - Fatal编程技术网

Python &引用;在表中插入“值”;不发送数据

Python &引用;在表中插入“值”;不发送数据,python,sql-insert,mysql-python,Python,Sql Insert,Mysql Python,我在这方面是新手,这是我的第一个问题。我希望你们能帮忙。 如果我的问题格式不对,也可以随意评论 代码非常简单。我有DB连接,2个函数-一个用于打印,另一个用于选择要为这些查询执行和输入多少SQL查询 想法是输入一个SQL查询数(INT)——例如,2,然后在另一行中用户必须输入2个SQL查询。 之后,call_table函数将打印出当前表的状态/情况/数据 例如,用户希望打印出控制台表数据(表有两列,[name][college],varchar类型) 当我尝试向同一个表中插入一些值时,该表不会发

我在这方面是新手,这是我的第一个问题。我希望你们能帮忙。 如果我的问题格式不对,也可以随意评论

代码非常简单。我有DB连接,2个函数-一个用于打印,另一个用于选择要为这些查询执行和输入多少SQL查询

想法是输入一个SQL查询数(INT)——例如,2,然后在另一行中用户必须输入2个SQL查询。 之后,call_table函数将打印出当前表的状态/情况/数据

例如,用户希望打印出控制台表数据(表有两列,[name][college],varchar类型)

当我尝试向同一个表中插入一些值时,该表不会发生任何变化,不会输入数据。 查询是100%正确的,因为我在workbench中对它进行了测试,我还尝试从这个程序创建另一个表,查询正常执行,表也创建好了

我没有收到任何错误

代码如下:

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查询,但insert到表中不起作用


谢谢

您应该将查询附加到容器变量

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)

谢谢,我已经更改了它,但它没有解决问题。我收到一个错误,说“AttributeError:“NoneType”对象没有属性“commit”或“AttributeError:“Cursor”对象没有属性“commit”…我应该用db.commit()添加一个新变量,还是只在函数中添加一个新属性?在代码末尾,我添加了sql\u输入(mycursor)db.commit()调用_table(mycursor),现在它可以正常工作了。谢谢
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)