import json
import requests
import pymysql
url = 'https://xueqiu.com/v4/statuses/public_timeline_by_category.json?since_id=-1&max_id=-1&count=10&category=111'
headers = {
'Cookie': 'aliyungf_tc=AQAAALoQF3p02gsAUhVFebQ3uBBNZn+H; xq_a_token=584d0cf8d5a5a9809761f2244d8d272bac729ed4; xq_a_token.sig=x0gT9jm6qnwd-ddLu66T3A8KiVA; xq_r_token=98f278457fc4e1e5eb0846e36a7296e642b8138a; xq_r_token.sig=2Uxv_DgYTcCjz7qx4j570JpNHIs; _ga=GA1.2.516718356.1534295265; _gid=GA1.2.1050085592.1534295265; u=301534295266356; device_id=f5c21e143ce8060c74a2de7cbcddf0b8; Hm_lvt_1db88642e346389874251b5a1eded6e3=1534295265,1534295722; Hm_lpvt_1db88642e346389874251b5a1eded6e3=1534295722',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36',
}
while True:
response = requests.get(url,headers=headers)
res_dict = json.loads(response.text)
next_id = res_dict['next_max_id']
next_url = 'https://xueqiu.com/v4/statuses/public_timeline_by_category.json?since_id=-1&max_id='+str(next_id)+'&count=10&category=111'
url = next_url
list_list = res_dict['list']
for list_item in list_list:
data_str = list_item['data']
data_str = json.loads(data_str)
s_id = data_str['id']
s_title = data_str['title']
s_description = data_str['description']
s_target = data_str['target']
#写入mysql
db = pymysql.connect(host='127.0.0.1',user='root',password='123456',port='3306',database='xueqiu',charset='utf-8')
cursor = db.cursor(www.leyouzaixian2.com)
sql = "insert into iceball values (null ,'{}','{}','{}','{}')".format(s_id,s_title,s_description,s_target)
cursor.execute(sql)
db.commit(www.yigouyule2.cn)
cursor.close()
db.close(www.hjylp178.com)
# 写入文件版本
# temp = str(s_id) + ' ' + str(s_title) + ' ' + str(s_description) + ' ' + s_target
# print(temp)
# with open('xinwen.html','a',encoding='utf-8') as f:
# f.write(temp + '\n')
---------------------
这个例子和第一个例子相比,唯一不同就是ngx.say输出内容长了不少,我们发现浏览器先收到所有的hello,接着又收到了"the world" 。然而如果我们把4000改为小一点的值如2000(不同配置这个相对大小或有不同),那么仍然会出现先停顿3s,然后所有"hello"连同最后"the world"一起输出的情况。
通过以上三个例子,我们可以得出下面的结论:
ngx.say和ngx.print的同步和异步
nginx有个输出缓冲(system send buffer),如16k。ngx.say和ngx.print默认是向这个输出缓冲写入数据,如果没有显示的调用ngx.flush,那么在content阶段结束后输出缓冲会写入客户端;
如果没有ngx.flush也没有到结束阶段,但如果输出缓冲区满了,那么也会输出到客户端;
因此ngx.say和ngx.print的默认向客户端的输出都是异步的,非实时性的,改变这一行为的是ngx.flush,可以做到同步和实时输出。这在流式输出,比如下载大文件时非常有用。
ngx.flush的同步和异步
lua-nginx也提到了ngx.flush的同步和异步。某一个ngx.say或者ngx.print调用后,这部分输出内容会写到输出缓冲区,同步的方式ngx.flush(true)会等到内容全部写到缓冲区再输出到客户端,而异步的方式ngx.flush()会将内容一边写到缓冲区,而缓冲区则一边将这些内容输出到客户端。
openresty和nginx流式输出的比较
流式输出,或者大文件的下载,nginx的upstream模块已经做得非常好,可以通过proxy_buffering|proxy_buffer_size|proxy_buffers 等指令精细调控,而且这些指令的默认值已经做了妥善处理。我们来看看这些指令以及默认值:
proxy_buffering on;
proxy_buffer_size 4k|8k;
proxy_buffers 8 4k|8k;
proxy_busy_buffers_size 8k|16k;
proxy_temp_path proxy_temp;
proxy_buffering on表示内存做整体缓冲,内存不够时多余的存在由proxy_temp_path指定的临时文件中,off表示不做任何输出缓冲,从上游响应中接收一点就向客户端输出一点
proxy_buffer_size和proxy_buffers都是指定内存缓冲区的大小,默认为一页的大小,proxy_buffers还可以指定这样的缓冲区的个数
proxy_busy_buffers_size 这个"busy"看得出,这个指令一定是用在比较繁忙的时候了。在比较繁忙的时候(高并发或者大文件下载)时,就没有必要等到上游响应全部来了再发给客户端,可以来了一部分(proxy_busy_buffers_size)就发过去。于此同时,缓冲区的另外部分可以继续读。如果内存缓冲区不够用了,还可以开启文件缓冲区
proxy_temp_path 使用文件作为接受上游请求的缓冲区buffer,当内存不够用时启用
openresty的怎么做到过大响应的输出呢? 《OpenResty 最佳实践》 提到了两种情况:
输出内容本身体积很大,例如超过 2G 的文件下载
输出内容本身是由各种碎片拼凑的,碎片数量庞大
前面一种情况非常常见,后面一种情况比如上游已经开启Chunked的传输方式,而且每片chunk非常小。笔者就遇到了一个上游服务器通过Chunked分片传输日志,而为了节省上游服务器的内存将每片设置为一行日志,一般也就几百字节,这就太“碎片”了,一般日志总在几十到几百M,这么算下来chunk数量多大10w+。笔者用了resty.http来实现文件的下载,文件总大小48M左右。
local http = require "resty.http"
local httpc = http.new()
httpc:set_timeout(6000)
httpc:connect(host, port)
local client_body_reader, err = httpc:get_client_body_reader()
local res, err = httpc:request({
version = 1.1,
method = ngx.var.request_method,
path = ngx.var.app_uri,
headers = headers,
query = ngx.var.args,
body = client_www.dfgjpt.com body_reader
})
if not res www.hjshidpt.com then
ngx.say("Failed www.huarenyl.cn to request ".www.furong157.com. ngx.var.app_name .." server: ", err)
return
end
-- Response status
ngx.status = res.status
-- Response headers
for k, v in pairs(res.headers) do
if k ~= "Transfer-www.michenggw.com/ Encoding" then --必须删除上游Transfer-Encoding响应头
ngx.header[k] = v
end
end
-
import pymysql失败
2020-10-09 12:20:47 -
python连接数据库pip install pymysql后import pymysql 依然失败
2019-04-09 18:17:57执行pip install pymysql安装之后,执行import pymysql仍然不可用! 按照其他人的博客等检查 pip list,发现确实已经安装成功,但是回到pycharm中就是不好使。 摸索了以下操作 1.找到setting 2. 查看是否有pymysql...执行pip install pymysql安装之后,执行import pymysql仍然不可用!
按照其他人的博客等检查 pip list,发现确实已经安装成功,但是回到pycharm中就是不好使。
摸索了以下操作
1.找到setting
2.
查看是否有pymysql模块,因为我这是操作之后截的图,所以已经有PyMySQL 了
如果没有,按照如下操作:
运行,不再报错,问题解决
-
导入 PyMySQL失败
2018-09-27 10:55:301、import PyMySQL 鼠标放在PyMySQL上面,ALT+ENTER,导入PyMySQL。(如果下载失败,可能是由于更新了pip之后造成的,解决方法) 2、将import PyMySQL 修改为 import pymysql from ...1、import PyMySQL
鼠标放在PyMySQL上面,ALT+ENTER,导入PyMySQL。(如果下载失败,可能是由于更新了pip之后造成的,解决方法)
2、将import PyMySQL 修改为 import pymysql
from https://blog.csdn.net/weixin_35221883/article/details/80824905
-
有大神告诉我为什么pymysql导入失败
2018-11-13 17:03:00import json import requests import pymysql url = 'https://xueqiu.com/v4/statuses/public_timeline_by_category.json?since_id=-1&max_id=-1&count=10&category=111' headers = ...转载于:https://www.cnblogs.com/qwangxiao/p/9953194.html
-
关于Pycharm中使用PyMySQL出现的问题
2018-06-27 10:13:051、import PyMySQL鼠标放在PyMySQL上面,ALT+ENTER,导入PyMySQL。(如果下载失败,可能是由于更新了pip之后造成的,解决方法)2、将import PyMySQL 修改为 import pymysql... -
PyMySQL基本使用
2017-10-06 17:25:06import pymysql #打开数据库 (如果连接失败会报错) #db = pymysql.connect(host = '127.0.0.1', port = 3306, user = 'minbo', passwd = '123456', db = 'pythontest') db = pymysql.connect(host = '127.0.0.1',... -
pymysql的使用
2019-04-12 11:36:00import pymysql #打开数据库 (如果连接失败会报错)#db = pymysql.connect(host = '127.0.0.1', port = 3306, user = 'minbo', passwd = '123456', db = 'pythontest')db = pymysql.connect(host = '127.0.0.1', ... -
python3,pycharm使用pymysql模块连接MySQL数据库出错,连接数据库失败
2021-03-21 16:36:10import pymysql db = pymysql.connect("localhost", "root", "root", "scraping") cursor = db.cursor() sql = "INSERT INTO urls (url, content) VALUES ('www.baidu.com','This is content.')" try: cursor.... -
使用pymysql连接MySql数据库
2016-01-31 19:56:00MySQLdb安装失败了,直接使用pymysql,安装了pymysql。 并学习了使用使用pymysql创建数据库和表,并插入数据。 __author__ = 'Administrator' import pymysql try: conn= pymysql.connect(host... -
pymysql使用(二)
2018-08-28 23:44:00import pymysql db = pymysql.connect("localhost","root","","hank") #打开数据库 (如果连接失败会报错) cursor = db.cursor() #获取游标对象 sql_select = "select version()" #执行sql查询操作 cursor.execute... -
python3 pymysql数据库基本操作
2019-03-06 13:40:01python数据库基本操作,需要有pymysql的支持,可通过pip install pymssql下载,如果下载失败,可python --version检查pip的版本。 1.数据库连接 import pymysql conn = pymysql.connect(host="127.0.0.1",... -
用pymysql链接mysql_使用pymysql连接MySql数据库
2021-02-03 14:36:08MySQLdb安装失败了,直接使用pymysql,安装了pymysql。并学习了使用使用pymysql创建数据库和表,并插入数据。__author__ = 'Administrator'import pymysqltry:conn= pymysql.connect(host='localhost', port=3306, ... -
Centos7 Python3连接数据库失败:ImportError: No module named pymysql
2019-04-27 16:11:37PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。 首先,使用以下命令安装最新版的 PyMySQL: [root@localhost ~]# pip install pymysql ...但是在Python中,执行import ... -
MySQl 数据库 之 python模块 pymysql 简单介绍
2018-10-11 15:46:00一. 下载: 终端输入指令: pip3 install pymysql 如果失败就检查 pip 指令的环境变量是否配置;...等待下载完成后, 在终端直接进入 python 环境, 导入该模块, 若无报错,则...import pymysql 2, 连接数据库服务器... -
python 数据库模块_MySQl 数据库 之 python模块 pymysql 简单介绍
2021-03-05 15:39:15下载:终端输入指令: pip3 install pymysql如果失败就检查 pip 指令的环境变量是否配置;若不会,则自行百度;等待下载完成后, 在终端直接进入 python 环境, 导入该模块, 若无报错,则证明下载成功.(如下图所示)二. 开始... -
pymysql 插入数据 转义处理方式
2021-01-21 16:23:25操作失败。比如 \这样的转义字符 解决方案 插入(查询)之前用 connection.escape(str)处理一下即可 代码示例 import pymongo sql_pattern = select * from my_collection where name = %s #注意,这里直接用%s,不要... -
记一些Python(Pymysql)建表、增删改查等基础操作(小白适用)
2020-08-26 01:36:231、读取sql文件创建数据表 有一个形如下图的sql文件,使用python读取文件并在数据库中...import pymysql def CreateTables(document,database): try: db = pymysql.connect(host='localhost', user='root', passwo -
请问下pycharm中import MySQLdb安装失败的问题。。。
2017-10-06 09:08:49后来在命令行中输入conda install pymysql和conda install mysql-python安装之后还是不能import 直接conda install MySQLdb 也显示安装不了![图片说明]... -
web浏览器 php的exec命令调用py脚本 却因为py中import某些库失败而无法执行
2020-12-25 02:08:11调试之后发现,是在import pyecharts时出了问题,而且我的代码先后分别import了time、pymysql等库都没有报错,偏偏是pyecharts出了问题。 找到apache目录下的errorlog,发现报错如下: Traceback (most recent call ... -
python sql转义_pymysql 插入数据 转义处理方式
2020-12-09 23:59:42最近用pymysql把一些质量不是很高的数据源导入mysql数据库的时候遇到一点问题,主要是遇到像 \ 这样的具有特殊意义的字符时比较难处理。这里有一个解决方案基本环境python3pymysqllinux问题描述插入(查询)数据时遇到... -
mysql 114_114-解决mysqlclient安装失败,及django使用mysql的一个天坑
2021-02-04 23:27:26安装好MySQL之后,直接用Python进行操作是可以的,假设要在django中使用mysql,还需要安装pymysql,话不多说,直接安装:pip3 install pymysql --...引入pymysql:import osimport pymysqlpymysql.install_as_MyS... -
python3与MySQL数据库交互失败
2019-09-27 18:06:50问题描述: 使用python3与mysql进行交互操作时,发现无法 import mysqldb 模块 原因: python3中已经不支持mysqldb模块,改为...import pymysql try: conn = pymysql.connect(host='localhost', port=3306... -
python定时运行失败_Linux中定时任务执行python脚本失败的解决方法
2020-12-08 19:02:25因工作需要,需要在服务器中写一个定时任务,定时把redis数据库中的数据查询出来存放在mysql.../usr/local/bin/pyhtonimport redisimport pandasimport numpyimport pymysqlfrom sqlalchemy import create_engi... -
Linux中定时任务执行python脚本失败的解决方法
2019-09-24 15:35:29因工作需要,需要在服务器中写一个定时任务,定时把redis数据库中的数据查询出来存放在mysql数据库中,奈何没写过shell脚本,只能用python代替了。确定好思路开始行动。...import pymysql from sqlalchemy import... -
pycharm链接MySQL失败_pycharm连接本地mysql失败
2021-01-27 06:01:36import pymysql"""1、连接本地数据库2、建立游标3、创建表4、插入表数据、查询表数据、更新表数据、删除表数据"""def create_table():#连接本地数据库db = pymysql.connect("localhost","root","123456","test")#...
收藏数
93
精华内容
37