当我插入第一个值时,下次当我给出不同的值时,旧的更新用新的值。我试图插入多个值并存储它们而不更新它们。我怎么做?
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()
答案 0 :(得分:1)
我在这里看不到任何代码进行实际更新,除非您能够澄清您所看到的内容以及您希望看到以下内容可能对此没有帮助。
现在您正在删除一个表并重新创建它,这将从中删除所有以前的数据。你的Insert语句通常永远不会改变以前没有的行,所以我将根据你的问题猜测你可能有一个Update Employee Set (New Data)
会改变以前的记录。
要插入新数据,您需要执行另一个Insert
命令。如果您正在执行Update
命令,它将更新所有记录而不插入新行。通常情况下,Update
会在where (Conditional Statement)
后跟随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()
,以便您限制记录的修改方式。
此时我没有python或SQL数据库,这应该可行。我添加了您提供的代码,但我删除了身份验证数据。
{{1}}