python 访问mysql

python  操作mysql
 
1.加载数据库模块 MySQLdb  在python2.7上使用, 3.0使用pymysql
---import MySQLdb

2.连接数据库mysql系统
---db = MySQLdb.connect("localhost","root","123456" , charset='utf8')
---db = MySQLdb.connect("127.0.0.1","root","123456", charset='utf8' )
如果执行localhost时连接失败,而127.0.0.1成功。
可以修改hosts文件, 将 
#	127.0.0.1       localhost 前面的 #去掉既可

3.连上mysql,并选择进入某个数据库
---db = MySQLdb.connect("localhost","root","123456" , db='userdata',charset='utf8')
---db = MySQLdb.connect("127.0.0.1","root","123456", db='userdata',charset='utf8' )
或:
---cursor = db.cursor()
---cursor.execute("""use userdata""")

4.读取数据表login
---effect_row_count = cursor.execute('select * from login')
effect_row_count为返回的数据行数
4.1取一条数据:
---one_line_list = cursor.fetchone()
返回的是一行数据组成的元祖(,,...),可以通过下标访问每一列one_line_list[0],one_line_list[1]
4.2取所有的数据:
---all_line_list = cursor.fetchall()
返回的是((),(),()...)
4.3获取前n行数据:
---n_line_list = cursor.fetchmany()

5.插入数据
5.1插入一条
---sql = "insert into login(Name,passwod) values(%s,%s)%("zhangsan","123")"
---cursor.execute(sql) 
5.2插入多条
---data = [("zhangsan","123"),("lisi","123"),]
---sql = "insert into login(Name,passwod) values(%s,%s),data"
---cursor.executemany(sql) 
5.3要想SQL语句执行成功,还要提交:
--- db.commit()

6.判断数据库中是否存在表login
ret = self.cursor.execute("show tables")
results = self.cursor.fetchall()
for r in results:
    if 'login' in r
        print u'login表已经存在'
    else:
        print u'login表不存在’
        
7.数据库的备份
例如:将数据库userdata复制到backup_dir_name,此为全路径加文件名如:backup_dir_name = c:/backup_dir/back.sql
try:
    os.system("mysqldump -uroot -p%s userdata > %s" % (key,backup_dir_name))  
    self.progressBar.setValue(100)
    self.label_tip.setText(u'备份完成')
    my_warning = QtGui.QMessageBox.information(self, u"提示", u"备份数据成功!",1, 0)
except:
    my_warning = QtGui.QMessageBox.warning(self, u"提示", u"备份数据库失败!",1, 0)
    self.label_tip.setText(u'备份失败')

7.数据库的恢复
  恢复数据库要先存在userdata,不存在则先创建再恢复,初始内容为空即可
7.1.先检查userdata是否存在:
ret = cursor.execute("""create database if not exists userdata default character set utf8 collate utf8_unicode_ci """)
7.2.执行恢复:
recover_file = 是上次备份的文件全路径名
try:
    key = u'123456'        
    os.system("mysql -uroot -p%s userdata < %s" % (key,recover_file))  
    self.progressBar.setValue(100)
    self.label_tip.setText(u'恢复完成')
    my_warning = QtGui.QMessageBox.information(self, u"提示", u"恢复数据成功!",1, 0)
except:
    my_warning = QtGui.QMessageBox.warning(self, u"提示", u"恢复数据库失败!",1, 0)
    self.label_tip.setText(u'恢复失败')
    cursor.close()
    db.close()


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值