python mysqldb使用小记

来源:互联网 发布:海蓝之谜淘宝旗舰店 编辑:程序博客网 时间:2024/05/17 22:34

1.) MySQLdb模块
2。)MySQLdb._mysql
_mysql uses two classes:
connection
result

3.)db = MySQLdb.connect(host=”localhost”, user=”joebob”,
passwd=”moonpie”, db=”thangs”)

db = MySQLdb.connect("localhost", "joebobrd" , "moonpie","tangs") connect的参数: host,port,db ,user,passwd,charset

4.) [cursor name] = [connection object name].cursor()
cursor = mydb.cursor()
cursor.execute()

 对象使用时,注意是默认开启事务的,    close()关闭    excute()执行语句,返回受影响的行数。    fetchone()执行查询语句时,获取查询结果集的第一行数据,返回一个元组    next()执行查询语句,获取当前行的下一行。    fetchall执行查询时,获取结果集的所有行,一行构成一个元组,          再讲这些元组装入一个元组返回。    scroll(value[,mode])将指针移动到某个位置        mode:表示移动的方式        mode的默认值为relative,表示基于当前行移动到value,value为               正则向下移动,为负则为向上移动。           mode为absolute,表示基于第一条数据的位置,第一条位置为0

5.) mydb.commit() #返回值为None
mydb.close() #

6.)可以同时开启多个连接:

7.)cur = mydb.cursor
result_select_1 = cur.execute(“select * from test”)

#command = cur.execute("""SELECT * FROM menu WHERE price > 7 """) 

8.)command = cur.execute(“”“SELECT * FROM menu WHERE price > 7”“”)
results = command.fetchall()

9.)
conn = MySQLdb.connect()

sql = ‘select * from yufu;’
cur = conn.cursor()
cur.execute(sql)
print cur.fetchall()

#coding:utf-8
import sys
import MySQLdb
#import _mysql
try:
db = MySQLdb.connect(host=”localhost”, user=”root”,
passwd=”29700hx”, db=”learn”)
except Exception as e:
print e

cur = db.cursor()
result = cur.execute(“”“select * from yufu”“”)
print result
print “++++++++++++++++++++++++++++=”

result_xx = result.fetchall()
print “++++++++++++++++++++++++++++”

python参数化语句:
有sql注入的形式如下:
++++++++++++++++++++
name =’” or 1=1 #’
sql = ‘select * from menu where NAME=”%s”’%name
如果cur.execute(sql):
转变后的形式及输出:
select * from menu where NAME=”” or 1=1 #”
((4L, u’catfish’, 5.0), (2L, u’bass’, 6.75))
++++++++++++++++++++++++++++++++++++++++++++++++++++++

参数化语句如下:
name =[‘” or 1=1 #’] #需要列表形式。
sql = ‘select * from menu where NAME=”%s”’
#print sql
cur = mydb.cursor()
result =cur.execute(sql,name)

mysql like语句:
select * from menu where name like ‘zhangjiaqign%’;
select * from menu where name not like ‘zhangjiaqign%’;

常见的几种形式:
zhangjiaqing%
%zhangjiaqing
%zhangjiaqing%
%zhangjiaqing%hexian
_ :5个下划线,表示五个任意字符。
__%: 两下划线加% ,表示匹配的字符串至少为两个字符以上。

sys模块:
使用脚本带进来的参数:

name = sys.argv[1]

几种常见形式:
sys.argv[n]:
n =0: 值为脚本名(一般带绝对路径)
n>0: n为多少,就是第几个参数
sys.argv[n:]:python中list的特性,在这里都可以使用。

mysql insert语句:
insert into hexian(name) select NAME from menu;

原创粉丝点击