python操作mysql方法和常见问题
2013-02-21 10:35
465 查看
安装mysql模块
sudo easy_install mysql-python
连接数据库
#!/usr/bin/env python #coding=utf-8 import MySQLdb conn = MySQLdb.connect('localhost','root','rootpass','oj',charset='utf8') cur = conn.cursor()
连接数据库时要注意数据库编码,不然一堆编码问题很愁人的~最好统一使用utf8编码。
执行sql语句
sql_content = "select * from user" cur.execute(sql_content) data = cur.fetchall() for i in data: print i
可以用fetchone来获取一条结果。如果是插入数据,要执行commit操作,不然数据不会被写入数据库。最好是执行完所有的sql语句之后再commit,实践证明,这样会带来很大的速度提升。
重点讲讲插入和更新数据
插入或更新数据有两种方法1.拼接sql语句:
sql_content = "insert into table(key1,key2,key3) values (%s,%s,%s)"%(value1,value2,value3) cur.execute(sql_content)
2.用问号替代
sql_content = "insert into table(key1,key2,key3) values (?,?,?)" cur.execute(sql_content,(value1,value2,value3))
如果value的值存在不确定性,那么上面两条语句存在sql注入风险。
例如,如果value是一段html代码,html代码中如果存在引号(但引号或者双引号),如果不加处理,那么sql语句就将被截断,将会引发插入错误。
如果value中存在英文逗号,将会造成前面的key和后面的value不对应,也不能正确插入数据。
如果value中存在反斜线\,那么在python中反斜线后面的数据将被转义,如果不处理插入的话将会造成字符丢失或者其他不可遇见的结果。
因为在sql中和在python中有好多含有特殊含义的符号,如果不能很好的处理的话将会出现好多问题,幸好MYSQLdb模块给我们提供了一个escape_string方法,用这个方法能自动处理好上面的问题,特别方便。
此外,不建议一次插入多个数据,因为一次插入多个数据有可能造成key和value不能对应,昨天因为这个问题纠结了一下午。最后将一条sql语句拆成多条语句,也就是一次插入一个value才将问题解决
相关文章推荐
- python操作mysql方法和常见问题
- python操作mysql方法和常见问题
- python操作mysql方法和常见问题
- python操作mysql方法和常见问题
- python操作mysql方法和常见问题
- 在Windows上安装Python+MySQL 的常见问题及解决方法
- 在Windows上安装Python+MySQL 的常见问题及解决方法
- 在Windows上安装Python+MySQL 的常见问题及解决方法
- 在Windows上安装Python+MySQL 的常见问题及解决方法(pythonmysql)
- 在Windows上安装Python+MySQL 的常见问题及解决方法
- python由于版本问题而出现的几个常见Warning及解决方法
- mysql中文乱码问题,phpmyadmin操作解决方法
- python操作Mysql入库,编码(乱码问题)解决
- Linux环境下Mysql的安装教程及安装过程常见问题的解决方法
- Python安装第三方库及常见问题处理方法汇总
- 常见mysql的错误以及解决方法-常见问题
- Python操作MySQL以及中文乱码的问题
- 困扰老子一下午的数据库操作问题(python+mysql)
- python常见编码问题解决方法
- [python爬虫] Selenium常见元素定位方法和操作的学习介绍