-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdb_access.py
More file actions
63 lines (45 loc) · 1.29 KB
/
Copy pathdb_access.py
File metadata and controls
63 lines (45 loc) · 1.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
from sqlalchemy import desc
from models import *
import datetime
session = DBSession()
# 存入ip
def create_proxy(**kwargs):
try:
session.add(Proxy(ip=kwargs['ip'], port=kwargs['port'], code=kwargs['code'], country=kwargs['country'],
anonymity=kwargs['anonymity'], https=kwargs['https']))
session.flush()
except Exception as e:
session.rollback()
# 取出所有ip
def get_ip():
iplist = []
i = session.query(Proxy.ip, Proxy.port).all()
for _ in i:
iplist.append(str(_[0]) + ':' + str(_[1]))
return iplist
# 删除ip
def del_ip(ip):
try:
i = session.query(Proxy).filter_by(ip=ip).first()
session.delete(i)
session.flush()
except:
session.rollback()
# 随机选择一个代理
def random_ip():
ip = session.query(Proxy.ip, Proxy.port).order_by(func.random()).first()
return ip[0] + ':' + ip[1]
def random_overseas_ip():
ip = session.query(Proxy.ip, Proxy.port).filter(Proxy.country != 'China').order_by(func.random()).first()
return ip[0] + ':' + ip[1]
if __name__ == '__main__':
import time
# a = random_ip()
start = time.time()
a = random_overseas_ip()
print(a)
end = time.time()
print('Cost time:', end - start)
"""
0.06
"""