当我尝试插入新值时,我之前插入的旧值得到更新。这是我的代码
When i try to insert new value, the old value i inserted earlier gets updated. This is my code
当我插入第一个值和下一次我给出不同的值时,旧值会更新为新值。我正在尝试插入多个值并存储它们而不更新它们。我怎么做?
import pymysql
conn = pymysql.connect(host='127.0.0.1', user='root', passwd='nazaf123', db='nazafdatabase')
cur = conn.cursor()
cur.execute("DROP TABLE IF EXISTS EMPLOYEE")
sql = """CREATE TABLE EMPLOYEE (
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(2),
SALARY FLOAT )"""
cur.execute(sql)
sql = """INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, SALARY)
VALUES ('Nazaf', 'Anwar', 22, 'M', 10000)"""
try:
cur.execute(sql)
conn.commit()
except:
conn.rollback()
cur.execute("""SELECT * FROM employee;""")
print(cur.fetchall())
cur.close()
conn.close()
我在这里没有看到任何实际更新的代码,除非你能澄清你所看到的和你期望看到的以下内容可能对这里没有帮助。
现在您正在删除 table 并重新创建它,这将删除其中所有以前的数据。您的 Insert 语句通常永远不会更改 none 存在的先前行,因此我将根据您的问题进行猜测,您可能有一个 Update Employee Set (New Data)
会更改先前的记录。
要插入新数据,您需要执行另一个 Insert
命令。如果您正在执行 Update
命令,它将更新所有记录而不是插入新行。通常 Update
后跟一个 where (Conditional Statement)
,它允许您限制记录的修改方式。
我现在没有 python 或 SQL 数据库,这应该可以。我添加到您提供的代码中,但删除了身份验证数据。
import pymysql
conn = pymysql.connect({Connection Data here})
cur = conn.cursor()
sql = """INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, SALARY) VALUES ('Nazaf', 'Anwar', 22, 'M', 10000)"""
try:
cur.execute(sql)
conn.commit()
except:
conn.rollback()
cur.execute("""SELECT * FROM employee;""")
#You should see the current data here.
sql = """INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, SALARY) VALUES ('John', 'Doe', 44, 'M', 300000)"""
cur.execute(sql)
cur.execute("""SELECT * FROM employee;""")
#You should see both Nazaf and John
sql = """UPDATE EMPLOYEE SET SALARY=30 WHERE FIRST_NAME='John'"""
cur.execute(sql)
cur.execute("""SELECT * FROM employee;""")
#You should see both Nazaf and John, however John's salary will be 30
sql = """UPDATE EMPLOYEE SET FIRST_NAME='BOB'"""
cur.execute(sql)
cur.execute("""SELECT * FROM employee;""")
#You should see the first names changed to bob.
print(cur.fetchall())
cur.close()
conn.close()
当我插入第一个值和下一次我给出不同的值时,旧值会更新为新值。我正在尝试插入多个值并存储它们而不更新它们。我怎么做?
import pymysql
conn = pymysql.connect(host='127.0.0.1', user='root', passwd='nazaf123', db='nazafdatabase')
cur = conn.cursor()
cur.execute("DROP TABLE IF EXISTS EMPLOYEE")
sql = """CREATE TABLE EMPLOYEE (
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(2),
SALARY FLOAT )"""
cur.execute(sql)
sql = """INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, SALARY)
VALUES ('Nazaf', 'Anwar', 22, 'M', 10000)"""
try:
cur.execute(sql)
conn.commit()
except:
conn.rollback()
cur.execute("""SELECT * FROM employee;""")
print(cur.fetchall())
cur.close()
conn.close()
我在这里没有看到任何实际更新的代码,除非你能澄清你所看到的和你期望看到的以下内容可能对这里没有帮助。
现在您正在删除 table 并重新创建它,这将删除其中所有以前的数据。您的 Insert 语句通常永远不会更改 none 存在的先前行,因此我将根据您的问题进行猜测,您可能有一个 Update Employee Set (New Data)
会更改先前的记录。
要插入新数据,您需要执行另一个 Insert
命令。如果您正在执行 Update
命令,它将更新所有记录而不是插入新行。通常 Update
后跟一个 where (Conditional Statement)
,它允许您限制记录的修改方式。
我现在没有 python 或 SQL 数据库,这应该可以。我添加到您提供的代码中,但删除了身份验证数据。
import pymysql
conn = pymysql.connect({Connection Data here})
cur = conn.cursor()
sql = """INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, SALARY) VALUES ('Nazaf', 'Anwar', 22, 'M', 10000)"""
try:
cur.execute(sql)
conn.commit()
except:
conn.rollback()
cur.execute("""SELECT * FROM employee;""")
#You should see the current data here.
sql = """INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, SALARY) VALUES ('John', 'Doe', 44, 'M', 300000)"""
cur.execute(sql)
cur.execute("""SELECT * FROM employee;""")
#You should see both Nazaf and John
sql = """UPDATE EMPLOYEE SET SALARY=30 WHERE FIRST_NAME='John'"""
cur.execute(sql)
cur.execute("""SELECT * FROM employee;""")
#You should see both Nazaf and John, however John's salary will be 30
sql = """UPDATE EMPLOYEE SET FIRST_NAME='BOB'"""
cur.execute(sql)
cur.execute("""SELECT * FROM employee;""")
#You should see the first names changed to bob.
print(cur.fetchall())
cur.close()
conn.close()