pymysql安装和使用 - 龙小爱编程
一、pymysql安装
sql="select down_task_id,stock_code,list_date from down_task where down_type=1 and task_status=1" conn = pymysql.connect(host=MYSQL_IP,port=MYSQL_PORT,user=MYSQL_USER,passwd=MYSQL_PWD,db=MYSQL_DATABASE,charset=MYSQL_ENCODE) cur = conn.cursor() cur.execute(sql) for r in cur: mydata=downtask(r[0],r[1],r[2]) task_dict[mydata.down_task_id]=mydata update_task(mydata.down_task_id,2) conn.close()
pymysql也提供了很多取数据的方法,比如:
- 取一行数据:row=cur.fetchone()
- 取所有返回的记录row = cur.fetchall()
- 取几行记录:row = cur.fetchmany(n) #n是返回的记录数
2、更新数据
sql="update down_task set task_status=%d,complate_date=now() where down_task_id=%d" conn = pymysql.connect(host=MYSQL_IP,port=MYSQL_PORT,user=MYSQL_USER,passwd=MYSQL_PWD,db=MYSQL_DATABASE,charset=MYSQL_ENCODE) try: cur = conn.cursor() time = datetime.datetime.now() time_str = datetime.datetime.strftime(time,\'%Y-%m-%d%H:%M:%S\') cur.execute(sql % (status,down_task_id)) conn.commit() conn.close() except: print \'##################update task compate failed,rollback###############\' conn.rollback() conn.close() return False
更新时记得要提交.只有在语句执行后做了提交操作,才会真正的将结果更新到数据表中.更新脚本中有时间字段时,特别是更新当前系统时间,直接用now()就好.
sql="insert down_task(stock_code, down_type,task_status,complate_date,create_date,list_date) values(%s,2,1,now(),now(),%d)" conn = pymysql.connect(host=MYSQL_IP,port=MYSQL_PORT,user=MYSQL_USER,passwd=MYSQL_PWD,db=MYSQL_DATABASE,charset=MYSQL_ENCODE) try: cur = conn.cursor() cur.execute(sql % ("\'"+stock_code+"\'",list_date)) conn.commit() conn.close() except: print \'##################update task compate failed,rollback###############\' conn.rollback() conn.close() return False
插入操作时有两点需要注意:
sql="insert down_task(stock_code, down_type,task_status,complate_date,create_date,list_date) values(\'002332\',2,1,now(),now(),2010),(\'002332\',2,1,now(),now(),2010)" conn = pymysql.connect(host=MYSQL_IP,port=MYSQL_PORT,user=MYSQL_USER,passwd=MYSQL_PWD,db=MYSQL_DATABASE,charset=MYSQL_ENCODE) try: cur = conn.cursor() cur.execute(sql) conn.commit() conn.close() except: print \'##################insert task compate failed,rollback###############\' conn.rollback() conn.close() return False
5、删除操作
delsql = "delete from down_task where stock_code=%s" conn = pymysql.connect(host=MYSQL_IP,port=MYSQL_PORT,user=MYSQL_USER,passwd=MYSQL_PWD,db=MYSQL_DATABASE,charset=MYSQL_ENCODE) try: cur = conn.cursor() cur.execute(delsql % ("\'"+\'2332\'+"\'")) conn.commit() conn.close() except: print \'##################insert task compate failed,rollback###############\' conn.rollback() conn.close() return False
6、调用无参数存储过程
conn = pymysql.connect(host=MYSQL_IP,port=MYSQL_PORT,user=MYSQL_USER,passwd=MYSQL_PWD,db=MYSQL_DATABASE,charset=MYSQL_ENCODE) #游标设置为字典类型 cursor = conn.cursor() #无参数存储过程 cursor.callproc(\'p2\') #等价于cursor.execute("call p2()") row_1 = cursor.fetchone() print row_1 conn.commit() cursor.close() conn.close()
7、调用有参数存储过程
conn = pymysql.connect(host=MYSQL_IP,port=MYSQL_PORT,user=MYSQL_USER,passwd=MYSQL_PWD,db=MYSQL_DATABASE,charset=MYSQL_ENCODE) cursor = conn.cursor() cursor.callproc(\'p1\', args=(1, 22, 3, 4)) #获取执行完存储的参数,参数@开头 cursor.execute("select @p1,@_p1_1,@_p1_2,@_p1_3") #{u\'@_p1_1\': 22, u\'@p1\': None, u\'@_p1_2\': 103, u\'@_p1_3\': 24} row_1 = cursor.fetchone() print row_1 conn.commit() cursor.close() conn.close()
四、总结