文字資料格式
ip2int函式用於ip位址轉化為整數
int2ip函式用於整數轉化為ip位址
insert_row函式用於插入資料庫記錄
from __future__ import print_function
import torndb
def get_mysql_conn():
return torndb.connection(
host=mysql["host"] + ":" + mysql["port"],
database=mysql["database"],
user=mysql["user"],
password=mysql["password"],
charset="utf8")
mysql =
def ip2int(ip):
try:
hexn = ''.join(["%02x" % long(i) for i in ip.split('.')])
except exception, e:
hexn = ''.join(["%02x" % long(i) for i in '0.0.0.0'.split('.')])
return long(hexn, 16)
def int2ip(n):
d = 256 * 256 * 256
q =
while d > 0:
m,n = divmod(n,d)
d = d/256
return '.'.join(q)
def insert_row():
with open("./ipdata.csv", 'r') as fr:
lines = fr.readlines()
nl_p_list =
for l in lines:
ls = l.strip().split(',', 4)
c1, c2, c3, c4, c5 = ls[0], ip2int(ls[1]), ip2int(ls[2]), ls[3], ls[4]
nl = [c2, c3, c4, c5]
db = get_mysql_conn()
db.execute("start transaction")
for i in range(len(nl_p_list)/1000 + 1):
tmp_nl_p_list = nl_p_list[i*1000: (i+1)*1000]
ret = db.insertmany('insert into ipdata (startip, endip, country, carrier) values (%s, %s, %s, %s)', tmp_nl_p_list)
db.execute("commit")
if __name__ == '__main__':
insert_row()
# print(ip2int('106.39.222.36'))
with open("./ipdata.csv", 'r') as fr:
lines = fr.readlines()
nl_p_list =
for l in lines:
ls = l.strip().split(',', 4)
c1, c2, c3, c4, c5 = ls[0], ip2int(ls[1]), ip2int(ls[2]), ls[3], ls[4]
nl = [c2, c3, c4, c5]
import random
import time
ip_list = map(lambda x: x[1], random.sample(nl_p_list, 100))
db = get_mysql_conn()
ret_list =
#表名sql_tmp = 'select .* from (select * from `test`.ipdata where %s>=startip order by startip desc limit 1) '
sql_list =
#拼接乙個很長的sql
for i in range(len(ip_list)):
sql = ' union all '.join(sql_list)
t0 = time.time()
# for row in db.query(sql):
# print(row)
dict(zip(ip_list, db.query(sql)))
t1 = time.time()
for ip in ip_list:
ret = db.get('select * from `test`.ipdata where %s>=startip order by startip desc limit 1', ip)
startip, endip = ret.get('startip'), ret.get('endip')
if startip <= ip <= endip:
else:
t2 = time.time()
print(t1-t0)
print(t2-t1)
格式化輸出字串函式format()使用字串的引數使用進行表示,0, 表示第乙個引數,1, 表示第二個引數, 以後順次遞加;
zip()函式接受任意多個(包括0個和1個)序列作為引數,返回乙個tuple列表
dict()函式是從可迭代物件來建立新字典。比如乙個元組組成的列表
python讀取文字資料寫入到資料庫及查詢優化
文字資料格式 ip2int函式用於ip位址轉化為整數 int2ip函式用於整數轉化為ip位址 insert row函式用於插入資料庫記錄 from future import print function import torndb def get mysql conn return torndb....
VC程式設計讀取文字資料
vc程式設計讀取文字資料 我們通常把資料存諸在 txt檔案上,但是我們通常要把這些資料取出來並進行處理。下面我將介紹一種在 vc 應用程式中讀取文字資料的方法。一 前言 因為經常要處理地質方面的資料。但是很多資料它不是直接存貯在資料庫檔案 如 access 檔案等 而是存貯在 txt檔案。經常有同學...
pyspark讀取hive資料寫入到redis
1 首先把redis包引入工程,這樣就不需要在集群裡每台機器上安裝redis客戶端。pip install redis cd usr local lib python3.6 dist packages 找到自己環境的路徑 zip r redis.zip redis hdfs dfs put redi...