pymysql安裝和使用
阿新 • • 發佈:2018-04-07
引號 安裝 datetime 批量 () eat 獲取自增 toc etc
python
>>import pymysql
沒有報錯就好
三、Pymysql的使用
1、查詢操做
一、pymysql安裝
安裝mymysql前請確認python環境已經準備好,在之前的博文http://www.cnblogs.com/newzol/p/8682176.html有說明pythonweb環境的安裝,如果已經具備了,那麽在安裝pymysql就變的簡單了.只要做如下處理: wget https://pypi.python.org/packages/29/f8/919a28976bf0557b7819fd6935bfd839118aff913407ca58346e14fa6c86/PyMySQL-0.7.11.tar.gz#md5=167f28514f4c20cbc6b1ddf831ade772 tar -zxvf PyMySQL-0.7.11.tar.gz cd PyMySQL-0.7.11 python setup.py install 二、驗證安裝是否成功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是返回的記錄數
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()就好.
3、插入操作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
插入操作時有兩點需要註意:
1、表中有自增主鍵, 有兩種處理方法:A:按照上面的處理,自增的字段不要寫在sql中,後面綁定參數時也不用自己綁定,所有的操作數據庫完成. B:先獲取自增主鍵的ID,獲取方法是:cur.自增主鍵字段,然後在sql中顯示綁定,sql中要帶上自增主鍵字段 2、插入的字符串前有0時,如果不做處理,插入到表中的記錄會將字符串前面的0舍去,在實際綁定值時,在綁定變量前後加上單引號既可,如:"‘"+stock_code+"‘" 4、批量綁定 實際使用過程中,單條操作往往比較慢,需要使用批量綁定,即在插入數據庫時對綁定參數進行批量綁定,示例如下: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()
四、總結
本文紙堆pymysql的常用使用方法和遇到過的坑進行總結,如有問題請大家批評指正.pymysql安裝和使用