python操作数据库execute操作
- 连接数据库:
def do_sql(sql,dbname='MYSQL',ip="localhost ",pwd="109945love",user='huayong',port=3306):
print(sql)
conn = getconnection(ip,pwd,dbname,user,port)
cur = conn.cursor()
result = 0
try:
result = cur.execute(sql)
connect.commit()
cur.close()
except Exception as e:
print(str(e))
conn.rollback()
if re.search("You have an error in your Sql syntax;", str(e), re.I|re.S|re.M):
print(sql)
print("byq's db.py 退出")
sys.exit(0)
finally:
conn.close()
return result
查看列名:在定义光标时,可以将其定义为字典形式,这样查询数据时可以查看对应列名
import MySQLdb
conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='123456',db='08day5')
cur = conn.cursor(cursorclass = MySQLdb.cursors.DictCursor)
sql='select * from userinfo'
reCount = cur.execute(sql)
reData = cur.fetchall()
print reData
cur.close()
conn.close()
查询数据库内容
reCount = cur.execute("select * from userinfo")#execute对数据库进行操作。
reData = cur.fetchall()#查询数据库内容,需进行操作后,再使用该命令
对数据库进行插入
reCount = cur.execute(' insert into userinfo(id, name, passwd) values(2, "root", "2345")' )
conn.commit()#提交数据
对数据库进行修改
reCount = cur.execute('update userinfo set name = "test" where id = 2')
`conn.commit()
对数据库进行删除
reCount = cur.execute('delete from userinfo where id=2')
conn.commit()
在进行数据库操作时,我们需要进行不同的操作和修改不一致的内容,所以可以将数据库命令和修改的内容分别用变量来表示
sql = 'insert into userinfo(id, name, passwd) values(%s, %s, %s)'
params = (2, "root", "2345")#使用元组进行数据添加
reCount = cur.execute(sql, params)# execute(sql[, parameters])
conn.commit()
批量插入数据
1、将要插入的数据定义为列表
2、使用executemany来执行命令
sql = 'insert userinfo(id, name, passwd) values(%s, %s, %s)'
params = [(2, "root", "2345"),
(3, "test", "3456")]
reCount = cur.executmany(sql, params)
conn.commit()
指针移动
相对位置:cur.scroll(-1, mode=‘relative’)
绝对位置:cur.scroll(0, mode=‘absolute’)
可以使用fetchone来进行验证.
获取自增ID:使用lastrowid来获取
关闭数据库
cur.close()
conn.close()
SQL select distincty语句
select distinct 语句用于返回唯一不同的值
在表中,一个列可能会包含多个重复值,有时也许希望仅仅列出不同的值即使用distinct关键词。
SELECT DISTINCT column_name, column_name
FROM table_name;
time.strftime(format[,t])
转换一个元组或struct_time表示的由gmtime()或localtime()返回的时间到由format参数指定的字符串。若未提供t则使用由localtime()返回的当前时间。format必须是一个字符串。如果t中的任何字段超出允许范围,则valueError
import time
print(time.strftime("1. %Y-%m-%d %H:%M:%S",time.localtime()))
print(time.strftime("2. %Y-%m-%d is %A",time.localtime()))
print(time.strftime("3. 十二小时制时间是:%Y-%m-%d %I:%M:%S%p",time.localtime()))
print(time.strftime("4. 现在是: %Z %c",time.localtime()))
print(time.strftime("5. 现在是: %Z %a %b %d %I:%M:%S%p",time.localtime()))
print(time.strftime("6. %Y-%m-%d是%B,这是%Y一年的第%j天",time.localtime()))
# %U 一年中的星期数(00-53)星期天为星期的开始
print(time.strftime("7. %Y-%m-%d是%A,这是%Y一年的第%U周",time.localtime(1607221844)))
# %W 一年中的星期数(00-53)星期一为星期的开始
print(time.strftime("8. %x是是%A,这是%Y一年的第%W周",time.localtime(1607221844)))
print(time.strftime("9. 现在是:%Z %X%p",time.localtime()))
1. 2020-12-10 10:45:00
2. 2020-12-10 is Thursday
3. 十二小时制时间是:2020-12-10 10:45:00AM
4. 现在是: 中国标准时间 Thu Dec 10 10:45:00 2020
5. 现在是: 中国标准时间 Thu Dec 10 10:45:00AM
6. 2020-12-10是December,这是2020一年的第345天
7. 2020-12-06是Sunday,这是2020一年的第49周
8. 12/06/20是是Sunday,这是2020一年的第48周
9. 现在是:中国标准时间 10:45:00AM