发布网友 发布时间:2022-04-29 22:04
共4个回答
懂视网 时间:2022-04-30 02:25
# -*- coding: utf-8 -*-
#mysqldb
import time, MySQLdb
#连接
conn=MySQLdb.connect(host="localhost",user="root",passwd="root",db="test",charset="utf8")
cursor = conn.cursor() 元组的返回值
conn.cursor(cursorclass=MySQLdb.cursors.DictCursor) 字典的返回值
#删除表
sql = "drop table if exists user"
cursor.execute(sql)
#创建
sql = "create table if not exists user(name varchar(128) primary key, created int(10))"
cursor.execute(sql)
#写入
sql = "insert into user(name,created) values(%s,%s)"
param = ("aaa",int(time.time()))
n = cursor.execute(sql,param)
print ‘insert‘,n
#写入多行
sql = "insert into user(name,created) values(%s,%s)"
param = (("bbb",int(time.time())), ("ccc",33), ("ddd",44) )
n = cursor.executemany(sql,param)
print ‘insertmany‘,n
#更新
sql = "update user set name=%s where name=‘aaa‘"
param = ("zzz")
n = cursor.execute(sql,param)
print ‘update‘,n
#查询
n = cursor.execute("select * from user")
for row in cursor.fetchall():
print row
for r in row:
print r
#删除
sql = "delete from user where name=%s"
param =("bbb")
n = cursor.execute(sql,param)
print ‘delete‘,n
#查询
n = cursor.execute("select * from user")
print cursor.fetchall()
cursor.close()
#提交
conn.commit()
#关闭
conn.close()
python下的MySQLdb使用
标签:
热心网友 时间:2022-04-29 23:33
不用重新创建,DBUtil之类的有连接池的都是会保持一定数量的连接,不会每次都重新创建。另外,如果表里增加新的结果,肯定会看到。我这里测试是正常的:追答嗯,这样写的SQL和处理的方法对应的含义不是很准确,SQL的结果集没有排序,不知道ls[-1]是哪一个。如果是最大的,则下一次的查询都是要求查询大于这个id,在插入之前肯定不会又比最大等大的id,所以必然是row为0,至于插入之后,按说应该变成1,但是这里没变,就不太清楚了。如果不是最大的,则每次查询的结果就不一定了。
建议使用order by和limit的组合约束查询结果,看看会不会能看到变化。
热心网友 时间:2022-04-30 00:51
cur.execute(sql , param)的返回值不是查询结果,要用cur.fetchone()或cur.fetchall()获取结果。追问cur.execute(sql , param)
热心网友 时间:2022-04-30 02:26
ls = [row for row in cur]