STEP4:但是,当我们再次执行语句的时候,由于已经创建了"customers"这个表,所以再次执行会报错,这个时候就需要加一个判断,判断这个表是否已经存在于test_s这个数据库中
ProgrammingError: Table \'customers\' alreadyy exists
STEP5****:我们可以用"SHOW TABLES"语句来查看数据表是否已经存在,如果存在就print"table already exists",如果不存在,就print"table does not exist"。
def tableExists(mycursor, name): stmt = "SHOW TABLES LIKE \'" +name+ "\'" mycursor.execute(stmt) return mycursor.fetchone() mycursor = con.cursor() if tableExists(mycursor , \'customers\'): print("table already exists") else: print("table not exists")STEP6:上面的语句只是为了帮助我们判断是否有同名表,当我们要新建一个表时,我们可以在这个判断的基础上,在创建新表前删掉数据库内的同名表,再建新表。删除我们用的是"DROP TABLE",新建表是"CERATE TABLE"
import mysql.connector #连接数据库 config = { \'user\' : \'blank\', \'password\' :\'fuying123888\', \'host\' : \'127.0.0.1\', \'port\':\'3306\', \'database\' : \'test_s\' } con = mysql.connector.connect(**config) # 检查一个表是否存在 def tableExists(mycursor, name): stmt = "SHOW TABLES LIKE \'"+name+"\'" mycursor.execute(stmt) return mycursor.fetchone() # 删除一个表(无论它是否已经存在) def dropTable(mycursor, name): stmt = "DROP TABLE IF EXISTS "+name mycursor.execute(stmt) # buffered=True 不设的话,查询结果没有读完会报错 # raise errors.InternalError("Unread result found") mycursor = con.cursor(buffered=True) # 删除临时表 tableName = \'customers\' dropTable(mycursor, tableName) # 创建一个表 mycursor.execute("CREATE TABLE customers(id INT AUTO_INCREMENT PRIMARY KEY,\ name VARCHAR(255), address VARCHAR(255), \ sex VARCHAR(225), age INT(10), sl INT(10))") 3.4 增、改、删、查 3.4.1 增在cutomers表中插入数据用的是"INSERT INTO"语句。
除了用一条条用execute( )插入之外,我们还可以用executemany()的方式批量插入,也就是val中包含的是一个元组列表,包含我们想要插入的数据。
需要注意的事是:如果数据表格有更新,那么必须用到commit()语句,否则在workbench是看不到插入的数据的。
# 往表里插入一些记录 sql="INSERT INTO customers(name,address,sex,age,sl) VALUES(%s, %s,%s,%s,%s)" val = ("John", "Highway 21","M",23,5000) mycursor.execute(sql, val) val = ("Jenny", "Highway 29","F",30,12500) mycursor.execute(sql, val) val=[("Tom","ABC 35","M",35,14000), ("Tom1","Highway 29","M",28,6700), ("Lily","Road 11","F",30,8000), ("Martin","Road 24","M",35,14000), ("Sally","Fast 56","M",32,15000)] mycursor.executemany(sql, val) con.commit()执行以上代码后,回到workbench,,我们可以看到最终的结果为: