adbapi查询语句 -- python3
Introduction to Twisted Enterprise
Abstract
Twisted is an asynchronous networking framework, but most database API implementations unfortunately have blocking interfaces -- for this reason, twisted.enterprise.adbapi was created. It is a non-blocking interface to the standardized DB-API 2.0 API, which allows you to access a number of different RDBMSes.
What you should already know
Python :-)
How to write a simple Twisted Server (see this tutorial to learn how)
Familiarity with using database interfaces (see the documentation for DBAPI 2.0 or this article by Andrew Kuchling)
Quick Overview
Twisted is an asynchronous framework. This means standard database modules cannot be used directly, as they typically work something like:# Create connection... db = dbmodule.connect('mydb', 'andrew', 'password') # ...which blocks for an unknown amount of time # Create a cursor cursor = db.cursor() # Do a query... resultset = cursor.query('SELECT * FROM table WHERE ...') # ...which could take a long time, perhaps even minutes.Those delays are unacceptable when using an asynchronous framework such as Twisted. For this reason, twisted provides twisted.enterprise.adbapi, an asynchronous wrapper for any DB-API 2.0-compliant module. It is currently best tested with the pyPgSQL module for PostgreSQL.
enterprise.adbapi will do blocking database operations in seperate threads, which trigger callbacks in the originating thread when they complete. In the meantime, the original thread can continue doing normal work, like servicing other requests.
How do I use adbapi?
Rather than creating a database connection directly, use the adbapi.ConnectionPool class to manage a connections for you. This allows enterprise.adbapi to use multiple connections, one per thread. This is easy:# Using the "dbmodule" from the previous example, create a ConnectionPool from twisted.enterprise import adbapi dbpool = adbapi.ConnectionPool("dbmodule", 'mydb', 'andrew', 'password')Things to note about doing this:
There is no need to import dbmodule directly. You just pass the name to adbapi.ConnectionPool's constructor.
The parameters you would pass to dbmodule.connect are passed as extra arguments to adbapi.ConnectionPool's constructor. Keyword parameters work as well.
You may also control the size of the connection pool with the keyword parameters cp_min and cp_max. The default minimum and maximum values are 3 and 5.
So, now you need to be able to dispatch queries to your ConnectionPool. We do this by subclassing adbapi.Augmentation. Here's an example:class AgeDatabase(adbapi.Augmentation): """A simple example that can retrieve an age from the database""" def getAge(self, name): # Define the query sql = """SELECT Age FROM People WHERE name = ?""" # Run the query, and return a Deferred to the caller to add # callbacks to. return self.runQuery(sql, name) def gotAge(resultlist, name): """Callback for handling the result of the query""" age = resultlist[0][0] # First field of first record print "%s is %d years old" % (name, age) db = AgeDatabase(dbpool) # These will *not* block. Hooray! db.getAge("Andrew").addCallbacks(gotAge, db.operationError, callbackArgs=("Andrew",)) db.getAge("Glyph").addCallbacks(gotAge, db.operationError, callbackArgs=("Glyph",)) # Of course, nothing will happen until the reactor is started from twisted.internet import reactor reactor.run()This is straightforward, except perhaps for the return value of getAge. It returns a twisted.internet.defer.Deferred, which allows arbitrary callbacks to be called upon completion (or upon failure). More documentation on Deferred is available here.
Also worth noting is that this example assumes that dbmodule uses the qmarks paramstyle (see the DB-API specification). If your dbmodule uses a different paramstyle (e.g. pyformat) then use that. Twisted doesn't attempt to offer any sort of magic paramater munging -- runQuery(query, params, ...) maps directly onto cursor.execute(query, params, ...).
And that's it!
That's all you need to know to use a database from within Twisted. You probably should read the adbapi module's documentation to get an idea of the other functions it has, but hopefully this document presents the core ideas. 收起阅读 »
Abstract
Twisted is an asynchronous networking framework, but most database API implementations unfortunately have blocking interfaces -- for this reason, twisted.enterprise.adbapi was created. It is a non-blocking interface to the standardized DB-API 2.0 API, which allows you to access a number of different RDBMSes.
What you should already know
Python :-)
How to write a simple Twisted Server (see this tutorial to learn how)
Familiarity with using database interfaces (see the documentation for DBAPI 2.0 or this article by Andrew Kuchling)
Quick Overview
Twisted is an asynchronous framework. This means standard database modules cannot be used directly, as they typically work something like:# Create connection... db = dbmodule.connect('mydb', 'andrew', 'password') # ...which blocks for an unknown amount of time # Create a cursor cursor = db.cursor() # Do a query... resultset = cursor.query('SELECT * FROM table WHERE ...') # ...which could take a long time, perhaps even minutes.Those delays are unacceptable when using an asynchronous framework such as Twisted. For this reason, twisted provides twisted.enterprise.adbapi, an asynchronous wrapper for any DB-API 2.0-compliant module. It is currently best tested with the pyPgSQL module for PostgreSQL.
enterprise.adbapi will do blocking database operations in seperate threads, which trigger callbacks in the originating thread when they complete. In the meantime, the original thread can continue doing normal work, like servicing other requests.
How do I use adbapi?
Rather than creating a database connection directly, use the adbapi.ConnectionPool class to manage a connections for you. This allows enterprise.adbapi to use multiple connections, one per thread. This is easy:# Using the "dbmodule" from the previous example, create a ConnectionPool from twisted.enterprise import adbapi dbpool = adbapi.ConnectionPool("dbmodule", 'mydb', 'andrew', 'password')Things to note about doing this:
There is no need to import dbmodule directly. You just pass the name to adbapi.ConnectionPool's constructor.
The parameters you would pass to dbmodule.connect are passed as extra arguments to adbapi.ConnectionPool's constructor. Keyword parameters work as well.
You may also control the size of the connection pool with the keyword parameters cp_min and cp_max. The default minimum and maximum values are 3 and 5.
So, now you need to be able to dispatch queries to your ConnectionPool. We do this by subclassing adbapi.Augmentation. Here's an example:class AgeDatabase(adbapi.Augmentation): """A simple example that can retrieve an age from the database""" def getAge(self, name): # Define the query sql = """SELECT Age FROM People WHERE name = ?""" # Run the query, and return a Deferred to the caller to add # callbacks to. return self.runQuery(sql, name) def gotAge(resultlist, name): """Callback for handling the result of the query""" age = resultlist[0][0] # First field of first record print "%s is %d years old" % (name, age) db = AgeDatabase(dbpool) # These will *not* block. Hooray! db.getAge("Andrew").addCallbacks(gotAge, db.operationError, callbackArgs=("Andrew",)) db.getAge("Glyph").addCallbacks(gotAge, db.operationError, callbackArgs=("Glyph",)) # Of course, nothing will happen until the reactor is started from twisted.internet import reactor reactor.run()This is straightforward, except perhaps for the return value of getAge. It returns a twisted.internet.defer.Deferred, which allows arbitrary callbacks to be called upon completion (or upon failure). More documentation on Deferred is available here.
Also worth noting is that this example assumes that dbmodule uses the qmarks paramstyle (see the DB-API specification). If your dbmodule uses a different paramstyle (e.g. pyformat) then use that. Twisted doesn't attempt to offer any sort of magic paramater munging -- runQuery(query, params, ...) maps directly onto cursor.execute(query, params, ...).
And that's it!
That's all you need to know to use a database from within Twisted. You probably should read the adbapi module's documentation to get an idea of the other functions it has, but hopefully this document presents the core ideas. 收起阅读 »
python判断身份证的合法性
输入身份证号码, 判断18位身份证号码是否合法, 并查询信息(性别, 年龄, 所在地)
验证原理
将前面的身份证号码17位数分别乘以不同的系数, 从第一位到第十七位的系数分别为: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
将这17位数字和系数相乘的结果相加.
用加出来和除以11, 看余数是多少?
余数只可能有<0 1 2 3 4 5 6 7 8 9 10>这11个数字, 其分别对应的最后一位身份证的号码为<1 0 X 9 8 7 6 5 4 3 2>.
通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的Ⅹ。如果余数是10,身份证的最后一位号码就是2.
例如: 某男性的身份证号码是34052419800101001X, 我们要看看这个身份证是不是合法的身份证.
首先: 我们得出, 前17位的乘积和是189.
然后: 用189除以11得出的余数是2.
最后: 通过对应规则就可以知道余数2对应的数字是x. 所以, 这是一个合格的身份证号码.
代码如下:
github源码:https://github.com/Rockyzsu/IdentityCheck
原创文章,转载请注明
http://30daydo.com/article/340
收起阅读 »
验证原理
将前面的身份证号码17位数分别乘以不同的系数, 从第一位到第十七位的系数分别为: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
将这17位数字和系数相乘的结果相加.
用加出来和除以11, 看余数是多少?
余数只可能有<0 1 2 3 4 5 6 7 8 9 10>这11个数字, 其分别对应的最后一位身份证的号码为<1 0 X 9 8 7 6 5 4 3 2>.
通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的Ⅹ。如果余数是10,身份证的最后一位号码就是2.
例如: 某男性的身份证号码是34052419800101001X, 我们要看看这个身份证是不是合法的身份证.
首先: 我们得出, 前17位的乘积和是189.
然后: 用189除以11得出的余数是2.
最后: 通过对应规则就可以知道余数2对应的数字是x. 所以, 这是一个合格的身份证号码.
代码如下:
#!/bin/env python
# -*- coding: utf-8 -*-
from sys import platform
import json
import codecs
with codecs.open('data.json', 'r', encoding='utf8') as json_data:
city = json.load(json_data)
def check_valid(idcard):
# 城市编码, 出生日期, 归属地
city_id = idcard[:6]
print(city_id)
birth = idcard[6:14]
city_name = city.get(city_id,'Not found')
# 根据规则校验身份证是否符合规则
idcard_tuple = [int(num) for num in list(idcard[:-1])]
coefficient = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
sum_value = sum([idcard_tuple[i] * coefficient[i] for i in range(17)])
remainder = sum_value % 11
maptable = {0: '1', 1: '0', 2: 'x', 3: '9', 4: '8', 5: '7', 6: '6', 7: '5', 8: '4', 9: '3', 10: '2'}
if maptable[remainder] == idcard[17]:
print('<身份证合法>')
sex = int(idcard[16]) % 2
sex = '男' if sex == 1 else '女'
print('性别:' + sex)
birth_format="{}年{}月{}日".format(birth[:4],birth[4:6],birth[6:8])
print('出生日期:' + birth_format)
print('归属地:' + city_name)
return True
else:
print('<身份证不合法>')
return False
if __name__=='__main__':
idcard = str(input('请输入身份证号码:'))
check_valid(idcard)[/i]
github源码:https://github.com/Rockyzsu/IdentityCheck
原创文章,转载请注明
http://30daydo.com/article/340
收起阅读 »
pymysql.err.InternalError: Packet sequence number wrong - got 4 expected 1
在django里面使用pymysql的方式进行链接, 结果就悲剧了.
PyMySQL is not thread safty to share connections as we did (we shared the class instance between multiple files as a global instance - in the class there is only one connection), it is labled as 1:
threadsafety = 1
According to PEP 249:
1 - Threads may share the module, but not connections.
One of the comments in PyMySQL github issue:
you need one pysql.connect() for each process/thread. As far as I know that's the only way to fix it. PyMySQL is not thread safe, so the same connection can't be used across multiple threads.
Any way if you were thinking of using other python package called MySQLdb for your threading application, notice to MySQLdb message:
Don't share connections between threads. It's really not worth your effort or mine, and in the end, will probably hurt performance, since the MySQL server runs a separate thread for each connection. You can certainly do things like cache connections in a pool, and give those connections to one thread at a time. If you let two threads use a connection simultaneously, the MySQL client library will probably upchuck and die. You have been warned. For threaded applications, try using a connection pool. This can be done using the Pool module.
Eventually we managed to use Django ORM and we are writing only for our specific table, managed by using inspectdb. 收起阅读 »
PyMySQL is not thread safty to share connections as we did (we shared the class instance between multiple files as a global instance - in the class there is only one connection), it is labled as 1:
threadsafety = 1
According to PEP 249:
1 - Threads may share the module, but not connections.
One of the comments in PyMySQL github issue:
you need one pysql.connect() for each process/thread. As far as I know that's the only way to fix it. PyMySQL is not thread safe, so the same connection can't be used across multiple threads.
Any way if you were thinking of using other python package called MySQLdb for your threading application, notice to MySQLdb message:
Don't share connections between threads. It's really not worth your effort or mine, and in the end, will probably hurt performance, since the MySQL server runs a separate thread for each connection. You can certainly do things like cache connections in a pool, and give those connections to one thread at a time. If you let two threads use a connection simultaneously, the MySQL client library will probably upchuck and die. You have been warned. For threaded applications, try using a connection pool. This can be done using the Pool module.
Eventually we managed to use Django ORM and we are writing only for our specific table, managed by using inspectdb. 收起阅读 »
mongodb sort: Executor error during find command: OperationFailed: Sort operation used more than
mongodb 排序出现内存溢出:
使用limit函数限制其输出就可以了:
Error: error: {
"ok" : 0,
"errmsg" : "Executor error during find command: OperationFailed: Sort operation used more than the maximum 33554432 bytes of RAM. Add an index, or specify a smaller limit.",
"code" : 96,
"codeName" : "OperationFailed"
}
使用limit函数限制其输出就可以了:
db.getCollection('老布').find({}).sort({'created_at':-1}).limit(1000)收起阅读 »
每天给小孩子看英语视频可以让小孩学到什么?
结论是Nothing。
没有互动,没有实际使用,语言没有用武之地,最终只是当做一种娱乐消遣。
那么多看美剧的,问问他们的英语水平,会不会比7岁的在国外长大的小孩的英语水平高? 不会,至少他们连流畅沟通都做不到。
没有互动,没有实际使用,语言没有用武之地,最终只是当做一种娱乐消遣。
那么多看美剧的,问问他们的英语水平,会不会比7岁的在国外长大的小孩的英语水平高? 不会,至少他们连流畅沟通都做不到。
最新版的chrome中info lite居然不支持了
更新到了v67版本后,info lite居然不见了. 我晕.
只好降级......
版本 65.0.3325.162(正式版本) (64 位)
这个版本最新且支持info lite的。
只好降级......
版本 65.0.3325.162(正式版本) (64 位)
这个版本最新且支持info lite的。
windows 7 python3 安装MySQLdb 库
python3下没有MySQLdb的库,可以直接到这里下载mysqlclient库来替代。https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient
工行的app实在是烂到家了,怎么点击都打不开
都什么年代了,完全和招行这些app无法比,而且看起来就跟网页的网银时代一模一样的垃圾作风(只兼容IE,页面杂乱),垃圾的研发延续到app端,实在无法忍,十次九次打开失败,有导致整个系统假死的,或者系统突然极其卡顿,或者没有任何反应。
赢呗DDW转账失败,一直显示 0 of 12 确认区块
斐讯开通了天天牛后,需要用电脑端转账到官方的天天牛账户进行确认,后期也需要充值DDW才能参与世界杯的竞猜活动,购买其他的天天牛。 具体教程【斐讯 天天牛绑定教程】
刚开始是可以转账成功的,可是后面最近今天却一直卡在0 of 12 确认区块, 无论你选择了多转账费用还是选择少的转账费用,都无法转账成功。
点击查看大图
后来咨询了客户后才知道,原来最近斐讯在打击黄牛(刷天天牛),所以天天链的邀请码系统关闭了,而且转账是因为网络拥堵的原因,导致转账卡住了。 而且客服说了,当前转账失败的金额,等到DDW网络正常后会正常转入到天天牛的账号。所以不用担心金额会消失,只需要耐心等待网络修复。
收起阅读 »
刚开始是可以转账成功的,可是后面最近今天却一直卡在0 of 12 确认区块, 无论你选择了多转账费用还是选择少的转账费用,都无法转账成功。
点击查看大图
后来咨询了客户后才知道,原来最近斐讯在打击黄牛(刷天天牛),所以天天链的邀请码系统关闭了,而且转账是因为网络拥堵的原因,导致转账卡住了。 而且客服说了,当前转账失败的金额,等到DDW网络正常后会正常转入到天天牛的账号。所以不用担心金额会消失,只需要耐心等待网络修复。
收起阅读 »
python量化分析: 股票涨停后该不该卖, 怕砸板还是怕卖飞 ?
相信大家都有过这样的经验,某个股票忽然直线拉升打到涨停板,然后就会纠结当天要不要卖掉,如果股票没封住,注定会回落,这样会失去部分的利润。 但是又怕卖了后,封死涨停板,然后当天再也买不回来,然后第二天呢,高开就不想去追,或者去追高使得持有该股的成本变高了。
那么触及涨停板的个股我们应该继续持有,还是卖掉,还是卖掉做T接回来呢?
接下来用数据说话。【数据使用通联实验室的数据源】
首先获取当前市场上所有股票
然后获取每一个股票的日k线数据,可以设定一个时间段,我抓取了2012年到今天(2018-06-14)的所有数据,如果是次新股,那么数据就是上市当天到今天的数据。
抓取到的数据包含以下的字段:
点击查看大图
但是实际用到的字段只有几个, 开盘价,最高价,涨幅,昨天收盘价。
这里我排除了一字板开盘的个股,因为里面含有新股,会导致数据不精确,【后续我会统计,一字板开盘盘中被砸开的概率】,而且数据也排除了ST的个股,因为本人从来不买ST股,所以不会对ST进行统计。
fbl就是封板率的一个列表,包含了每只股票的触及涨停价后封板的概率。 然后对整体的数据取平均值:
最后得到的结果是:
64.0866513726
所以保持住涨停的概率还是大一些。所以站在概率大的一边上,触及涨停的时候应该继续持有,会有62.5%会到收盘保持涨停价。
(待续)
原创文章,转载请注明出处:
http://30daydo.com/article/331
收起阅读 »
那么触及涨停板的个股我们应该继续持有,还是卖掉,还是卖掉做T接回来呢?
接下来用数据说话。【数据使用通联实验室的数据源】
首先获取当前市场上所有股票
all_stocks = DataAPI.SecTypeRegionRelGet(secID=u"",ticker=u"",typeID=u"",field=u"",pandas="1")
然后获取每一个股票的日k线数据,可以设定一个时间段,我抓取了2012年到今天(2018-06-14)的所有数据,如果是次新股,那么数据就是上市当天到今天的数据。
抓取到的数据包含以下的字段:
点击查看大图
但是实际用到的字段只有几个, 开盘价,最高价,涨幅,昨天收盘价。
这里我排除了一字板开盘的个股,因为里面含有新股,会导致数据不精确,【后续我会统计,一字板开盘盘中被砸开的概率】,而且数据也排除了ST的个股,因为本人从来不买ST股,所以不会对ST进行统计。
fbl =
for code in all_stocks['secID']:
df = DataAPI.MktEqudGet(secID=code,ticker=u"",tradeDate=u"",beginDate=u"20120101",endDate=u"",isOpen="",field=u"",pandas="1")
df['ztj']=map(lambda x:round(x,2),df['preClosePrice']*1.1)
df['chgPct']=df['chgPct']*100
# 非一字板
zt = df[(df['ztj']==df['highestPrice']) & (df['openPrice']!=df['highestPrice'])]
fz= df[(df['ztj']==df['highestPrice']) & (df['openPrice']!=df['highestPrice'])&(df['closePrice']==df['highestPrice'])]
try:
f = len(fz)*1.00/len(zt)*100
fbl.append((code,f))
except Exception,e:
print e
print code
fbl就是封板率的一个列表,包含了每只股票的触及涨停价后封板的概率。 然后对整体的数据取平均值:
dx= dict(fbl)
x = np.array(dx.values())
print x.mean()
最后得到的结果是:
64.0866513726
所以保持住涨停的概率还是大一些。所以站在概率大的一边上,触及涨停的时候应该继续持有,会有62.5%会到收盘保持涨停价。
(待续)
原创文章,转载请注明出处:
http://30daydo.com/article/331
收起阅读 »
为啥抖音这些那么火 ?
精神鸦片
为什么大家不喜欢看书和学习,因为看书和学习不能获得即可的精神快感,需要时间沉淀。而玩游戏和抖音不一样,你马上就能获得精神上的快感。
为什么大家不喜欢看书和学习,因为看书和学习不能获得即可的精神快感,需要时间沉淀。而玩游戏和抖音不一样,你马上就能获得精神上的快感。
斐讯 天天牛绑定教程
天天牛邀请码 8vozbf 可以领取4代牛
最近斐讯推出了天天牛养成计划。 不过官方没有任何的指示教程,所以个人分享一个教程给大家。
1. 先把把旧的钱包备份一下 ,切记!! 而且一定要记得自己设的密码,官方的说法是,如果钱包文件不见了(重装系统),那么里面的币就找不到了,或者你忘记了自己设的密码,那么里面的币也同样没了。
备份很简单,点击 赢呗钱包菜单的 账户-》备份-》账户, 这是会看到一个 keystore 的文件夹,把这个额文件夹拷贝出来就可以了。
2. 升级电脑版的赢呗钱包。 因为旧版的钱包没有转出DDW币这个功能。
点击查看大图
有这个转币功能才能转币到天天牛的官方账号进行绑定
下载地址: http://www.phicomm.com/cn/index.php/Products/none_details.html
拉到最底下,就可以看到下载链接了。 最好到这个官方网站下载。
安装后,设置赢呗钱包的数据包文件夹,最好新建一个,不要和旧的公用一个文件夹,不然很容易吧你旧的钱包给覆盖了,假如你忘记了备份。
安装完成后,点击 账户, 备份,我的账户, 这个时候会弹出一个keystore的文件夹, 这时,就需要把上面第一步备份的keystore文件夹替换这个新的文件夹就可以了。 这样就备份完成了。
然后重新打开赢呗钱包,这个时候会同步数据,刚开始显示的账户余额是0的,不要紧,慢慢等数据同步完成了就会看到你的新钱包余额了。 记住你的钱包地址,下一步要用到。
点击查看大图
3. 然后打开斐讯商城app,进入到天天牛游戏页面, 会提示绑定页面:
首先填入你自己的赢呗钱包的地址,上一步记下的地址。
然后需要转币到天天牛的官方账户, 记住你要转的币的数目,这个数目每个人都不一样。
点击下一步。
4. 然后到电脑上,点击转出 按钮。 然后出现的转出页面中会看到转出页面有一个天天牛的下拉菜单
点击查看大图
在转出金额那里填入第3部需要转币的金额,一般就零点几个,不会很多。 然后点击转出。 注意,实际转出的币数会多一点,因为每次转需要少量的手续费。
转币完成后,需要等待1,2分钟,等待区域链网络同步。
一定同步完成了,最底下就会显示你的交易记录了。
点击查看大图
这是app上会显示你已经绑定成功了。
这里提供一个邀请码给大家: 8vozbf
填了后可以领取一只6代牛或者4代牛。 算给我一点写文章的动力吧。
或者你有不要DDW,尽管转给我我哈。 地址:0x2f92eF844DBAa9981b54817FfDc56b778dcA99f3
点击查看大图
如果遇到其他问题,可以在下面留言。
最近又出现了新问题:
赢呗DDW转账失败,一直显示 0 of 12 确认区块
可以点击进去看详情。
原创文章,转账请注明:
http://30daydo.com/article/329
收起阅读 »
最近斐讯推出了天天牛养成计划。 不过官方没有任何的指示教程,所以个人分享一个教程给大家。
1. 先把把旧的钱包备份一下 ,切记!! 而且一定要记得自己设的密码,官方的说法是,如果钱包文件不见了(重装系统),那么里面的币就找不到了,或者你忘记了自己设的密码,那么里面的币也同样没了。
备份很简单,点击 赢呗钱包菜单的 账户-》备份-》账户, 这是会看到一个 keystore 的文件夹,把这个额文件夹拷贝出来就可以了。
2. 升级电脑版的赢呗钱包。 因为旧版的钱包没有转出DDW币这个功能。
点击查看大图
有这个转币功能才能转币到天天牛的官方账号进行绑定
下载地址: http://www.phicomm.com/cn/index.php/Products/none_details.html
拉到最底下,就可以看到下载链接了。 最好到这个官方网站下载。
安装后,设置赢呗钱包的数据包文件夹,最好新建一个,不要和旧的公用一个文件夹,不然很容易吧你旧的钱包给覆盖了,假如你忘记了备份。
安装完成后,点击 账户, 备份,我的账户, 这个时候会弹出一个keystore的文件夹, 这时,就需要把上面第一步备份的keystore文件夹替换这个新的文件夹就可以了。 这样就备份完成了。
然后重新打开赢呗钱包,这个时候会同步数据,刚开始显示的账户余额是0的,不要紧,慢慢等数据同步完成了就会看到你的新钱包余额了。 记住你的钱包地址,下一步要用到。
点击查看大图
3. 然后打开斐讯商城app,进入到天天牛游戏页面, 会提示绑定页面:
首先填入你自己的赢呗钱包的地址,上一步记下的地址。
然后需要转币到天天牛的官方账户, 记住你要转的币的数目,这个数目每个人都不一样。
点击下一步。
4. 然后到电脑上,点击转出 按钮。 然后出现的转出页面中会看到转出页面有一个天天牛的下拉菜单
点击查看大图
在转出金额那里填入第3部需要转币的金额,一般就零点几个,不会很多。 然后点击转出。 注意,实际转出的币数会多一点,因为每次转需要少量的手续费。
转币完成后,需要等待1,2分钟,等待区域链网络同步。
一定同步完成了,最底下就会显示你的交易记录了。
点击查看大图
这是app上会显示你已经绑定成功了。
这里提供一个邀请码给大家: 8vozbf
填了后可以领取一只6代牛或者4代牛。 算给我一点写文章的动力吧。
或者你有不要DDW,尽管转给我我哈。 地址:0x2f92eF844DBAa9981b54817FfDc56b778dcA99f3
点击查看大图
如果遇到其他问题,可以在下面留言。
最近又出现了新问题:
赢呗DDW转账失败,一直显示 0 of 12 确认区块
可以点击进去看详情。
原创文章,转账请注明:
http://30daydo.com/article/329
收起阅读 »
python3中定义抽象类的方法在python2中不兼容
在python3中新式的定义抽象类的方法如下:
但是这个方法在python2中会提示语法错误。
在python2中只能像下面这种方式定义抽象类:
这种方式不仅在python2中可以正常运行,在python3中也可以。但是python3的方法只能兼容python3,无法在python2中运行。
原创地址:
http://30daydo.com/article/326
欢迎转载,请注明出处。
收起阅读 »
from abc import ABCMeta,abstractmethod
class Server(metaclass=ABCMeta):
@abstractmethod
def __init__(self):
pass
def __str__(self):
return self.name
@abstractmethod
def boot(self):
pass
@abstractmethod
def kill(self):
pass
但是这个方法在python2中会提示语法错误。
在python2中只能像下面这种方式定义抽象类:
from abc import ABCMeta,abstractmethod
class Server(object):
__metaclass__=ABCMeta
@abstractmethod
def __init__(self):
pass
def __str__(self):
return self.name
@abstractmethod
def boot(self):
pass
@abstractmethod
def kill(self):
pass
这种方式不仅在python2中可以正常运行,在python3中也可以。但是python3的方法只能兼容python3,无法在python2中运行。
原创地址:
http://30daydo.com/article/326
欢迎转载,请注明出处。
收起阅读 »
sklearn中的Bunch数据类型
在sklearn中自带部分数据 如 datasets 包中
那么这个
<class 'sklearn.utils.Bunch'>
是什么数据格式 ?
打印一下:
好吧,原来就是一个字典结构。可以像调用字典一样使用Bunch。
比如 data['image'] 就获取 key为image的内容。
原创地址:http://30daydo.com/article/325
欢迎转载,请注明出处。
收起阅读 »
那么这个
<class 'sklearn.utils.Bunch'>
是什么数据格式 ?
打印一下:
好吧,原来就是一个字典结构。可以像调用字典一样使用Bunch。
比如 data['image'] 就获取 key为image的内容。
原创地址:http://30daydo.com/article/325
欢迎转载,请注明出处。
收起阅读 »
sklearn中SGDClassifier分类器每次得到的结果都不一样?
如下代码:
每次输出的结果都不一样? WHY
因为你使用了一个默认参数:
SGDClassifier(random_state = None)
所以这个随机种子每次不一样,所以得到的结果就可能不一样,如果你指定随机种子值,那么每次得到的结果都是一样的了。
原创地址:http://30daydo.com/article/323
欢迎转载,请注明出处。
收起阅读 »
sgdc = SGDClassifier()
sgdc.fit(X_train,y_train)
sgdc_predict_y = sgdc.predict(X_test)
print 'Accuary of SGD classifier ', sgdc.score(X_test,y_test)
print classification_report(y_test,sgdc_predict_y,target_names=['Benign','Malignant'])
每次输出的结果都不一样? WHY
因为你使用了一个默认参数:
SGDClassifier(random_state = None)
所以这个随机种子每次不一样,所以得到的结果就可能不一样,如果你指定随机种子值,那么每次得到的结果都是一样的了。
原创地址:http://30daydo.com/article/323
欢迎转载,请注明出处。
收起阅读 »
斐讯天天链挖矿每天有多少个? 用的联通网络
上个月撸了个斐讯天天链N1和一个移动硬盘H1,然后激活了白金会员。 准备挖矿之旅。
家里接的是小区垄断的宽带,上网检测了下IP,是联通的网络,正常速度8M左右。
按照教程,注册激活,把硬盘格式化,然后开着天天链。每天都开着,一直在线,指示灯保持常亮。
然后每天打开日日盈app查看收益,少的可怜,平均一天0.8个,1个都不到。 目前木鸡上天天链的虚拟币DDW价格才0.4元一个,也就是4毛钱一个币,然后每天只能赚3毛钱,我去,电费都亏了。
挖了29天,才25个币。 而且现在是每天越挖越少。 币价越来越低。搞得家里的wifi网络和有线网络也变得卡了。
所以果断关掉天天链,真是费电不讨好。
附一张4月的币价:
原创文章,转载请注明
http://www.30daydo.com/article/262 收起阅读 »
家里接的是小区垄断的宽带,上网检测了下IP,是联通的网络,正常速度8M左右。
按照教程,注册激活,把硬盘格式化,然后开着天天链。每天都开着,一直在线,指示灯保持常亮。
然后每天打开日日盈app查看收益,少的可怜,平均一天0.8个,1个都不到。 目前木鸡上天天链的虚拟币DDW价格才0.4元一个,也就是4毛钱一个币,然后每天只能赚3毛钱,我去,电费都亏了。
挖了29天,才25个币。 而且现在是每天越挖越少。 币价越来越低。搞得家里的wifi网络和有线网络也变得卡了。
所以果断关掉天天链,真是费电不讨好。
附一张4月的币价:
原创文章,转载请注明
http://www.30daydo.com/article/262 收起阅读 »
51jb 脚本之家真逆天
几乎所有IT类的pdf电子书都可以在这个脚本之家获取的到,比很多专业的电子书网站都要强!
前列推荐!!!
前列推荐!!!
ubuntu samba连接斐讯天天链N1 提示 Host is down.
配置:
斐讯天天链N1 + 斐讯硬盘H1
ubuntu 和天天链在同一个内网中。
平时个人在ubuntu下使用的mount命令不管用。 提示 Host is down
如果直接用gui连接,是没问题的(打开文件夹,选择连接服务器,然后服务器地址填 smb://192.168.1.1 ) 然后就可以访问天天链的硬盘。
但是为什么使用mount命令就不行了呢 ?
通过不断更改参数,发现问题出在斐讯samba的版本用的是老旧的vers 1.0. 这时需要你在mount命令中制定版本。
通过上述的命令, 就可以把斐讯的硬盘mount到本地,并且有权限可以读写。
记得加上
uid=1000,gid=1000, 不然会没有权限读写,只能一直使用sudo 才能读写哦。
原创文章
转载请注明出处:http://30daydo.com/article/317
收起阅读 »
斐讯天天链N1 + 斐讯硬盘H1
ubuntu 和天天链在同一个内网中。
平时个人在ubuntu下使用的mount命令不管用。 提示 Host is down
如果直接用gui连接,是没问题的(打开文件夹,选择连接服务器,然后服务器地址填 smb://192.168.1.1 ) 然后就可以访问天天链的硬盘。
但是为什么使用mount命令就不行了呢 ?
通过不断更改参数,发现问题出在斐讯samba的版本用的是老旧的vers 1.0. 这时需要你在mount命令中制定版本。
sudo mount -t cifs -o username=root,password=xxxxx,uid=1000,gid=1000,vers=1.0,_netdev //192.168.1.88/HDisk /home/use/net
通过上述的命令, 就可以把斐讯的硬盘mount到本地,并且有权限可以读写。
记得加上
uid=1000,gid=1000, 不然会没有权限读写,只能一直使用sudo 才能读写哦。
原创文章
转载请注明出处:http://30daydo.com/article/317
收起阅读 »
python获取每天的涨停个股数据 和昨天涨停的今天表现
python获取每天的涨停个股数据 和昨天涨停的今天表现
(点击查看大图)
今日的涨停信息
(点击查看大图)
昨日涨停的今天信息
还有自动生成的K线图:
(点击查看大图)
有兴趣的朋友可以留言获取上述数据
原创文章
转载请注明出处:http://30daydo.com/article/316 收起阅读 »
(点击查看大图)
今日的涨停信息
(点击查看大图)
昨日涨停的今天信息
还有自动生成的K线图:
(点击查看大图)
有兴趣的朋友可以留言获取上述数据
原创文章
转载请注明出处:http://30daydo.com/article/316 收起阅读 »
numpy数组四舍五入
numpy.around(nlist, number)
传入一个np的数组和需要保留的位数作为参数
例子:
输出结果为:
array([0. , 0.013, 0.026, 0.039, 0.052, 0.065, 0.078, 0.091, 0.104, 0.117]) 收起阅读 »
传入一个np的数组和需要保留的位数作为参数
例子:
import numpy as np
x = np.arange(10)
x=x/77.0
print x
输出结果为:
[b][0. 0.01298701 0.02597403 0.03896104 0.05194805 0.06493506
0.07792208 0.09090909 0.1038961 0.11688312][/b]
[b]np.around(x, 3) #保存为3位小数[/b]
array([0. , 0.013, 0.026, 0.039, 0.052, 0.065, 0.078, 0.091, 0.104, 0.117]) 收起阅读 »
mongo服务器因为mongod.lock 被锁定无法正常运行
看log文件:
应该是之前没有正常被关闭,导致文件本锁住了。
解决办法:
1. 先把数据文件备份, --dbpath 的路径整个备份一下, 不然接下来的操作误操作了数据就丢失了
2. 运行修复命令:
mongod --dbpath /data/db --repair
替换上面的db为您自己的本地路径 收起阅读 »
Sun May 20 18:26:04.630 [initandlisten] MongoDB starting : pid=2343 port=27017 dbpath=/home/pi/mongo/db/ 32-bit host=raspberrypi
Sun May 20 18:26:04.631 [initandlisten]
Sun May 20 18:26:04.631 [initandlisten] ** NOTE: This is a 32 bit MongoDB binary.
Sun May 20 18:26:04.631 [initandlisten] ** 32 bit builds are limited to less than 2GB of data (or less with --journal).
Sun May 20 18:26:04.631 [initandlisten] ** See http://dochub.mongodb.org/core/32bit
Sun May 20 18:26:04.631 [initandlisten]
Sun May 20 18:26:04.631 [initandlisten] db version v2.4.10
Sun May 20 18:26:04.632 [initandlisten] git version: nogitversion
Sun May 20 18:26:04.632 [initandlisten] build info: Linux bm-wb-04 3.19.0-trunk-armmp #1 SMP Debian 3.19.1-1~exp1+plugwash1 (2015-03-28) armv7l BOOST_LIB_VERSION=1_55
Sun May 20 18:26:04.632 [initandlisten] allocator: system
Sun May 20 18:26:04.632 [initandlisten] options: { dbpath: "/home/pi/mongo/db/", journal: true, logpath: "/home/pi/mongo/mongod.log" }
Sun May 20 18:26:05.956 [initandlisten] journal dir=/home/pi/mongo/db/journal
Sun May 20 18:26:05.957 [initandlisten] recover : no journal files present, no recovery needed
Sun May 20 18:26:06.023 [initandlisten] ERROR: mmap private failed with out of memory. You are using a 32-bit build and probably need to upgrade to 64
Sun May 20 18:26:06.023 [initandlisten] Assertion: 13636:file /home/pi/mongo/db/xueqiu.5 open/create failed in createPrivateMap (look in log for more information)
0x662fa8 0x63527c 0x6196c0 0x6197bc 0x409d5c 0x4414fc 0x2ea634 0x2eaa3c 0x2eb55c 0x2ebd98 0x26f998 0x26fb94 0x175a20 0x177bf4 0x152bf0 0x7660e294
mongod(_ZN5mongo15printStackTraceERSo+0x1c) [0x662fa8]
mongod(_ZN5mongo10logContextEPKc+0x110) [0x63527c]
mongod(_ZN5mongo11msgassertedEiPKc+0xc0) [0x6196c0]
mongod(_ZN5mongo18msgassertedNoTraceEiPKc+0) [0x6197bc]
mongod(_ZN5mongo8MongoMMF13finishOpeningEv+0x308) [0x409d5c]
mongod(_ZN5mongo13MongoDataFile12openExistingEPKc+0x9c) [0x4414fc]
mongod(_ZN5mongo8Database16openExistingFileEi+0x23c) [0x2ea634]
mongod(_ZN5mongo8Database12openAllFilesEv+0x24) [0x2eaa3c]
mongod(_ZN5mongo8DatabaseC2EPKcRbRKSs+0x158) [0x2eb55c]
mongod(_ZN5mongo14DatabaseHolder11getOrCreateERKSsS2_Rb+0x500) [0x2ebd98]
mongod(_ZN5mongo6Client7Context11_finishInitEv+0x34) [0x26f998]
mongod(_ZN5mongo6Client7ContextC1ERKSsS3_b+0x78) [0x26fb94]
mongod(_ZN5mongo14_initAndListenEi+0xb00) [0x175a20]
mongod(_ZN5mongo13initAndListenEi+0x14) [0x177bf4]
mongod(main+0x2b8) [0x152bf0]
/lib/arm-linux-gnueabihf/libc.so.6(__libc_start_main+0x114) [0x7660e294]
Sun May 20 18:26:06.035 [initandlisten] warning database /home/pi/mongo/db/ xueqiu could not be opened
Sun May 20 18:26:06.035 [initandlisten] DBException 13636: file /home/pi/mongo/db/xueqiu.5 open/create failed in createPrivateMap (look in log for more information)
Sun May 20 18:26:06.036 [initandlisten] exception in initAndListen: 13636 file /home/pi/mongo/db/xueqiu.5 open/create failed in createPrivateMap (look in log for more information), terminating
Sun May 20 18:26:06.036 dbexit:
Sun May 20 18:26:06.036 [initandlisten] shutdown: going to close listening sockets...
Sun May 20 18:26:06.036 [initandlisten] shutdown: going to flush diaglog...
Sun May 20 18:26:06.036 [initandlisten] shutdown: going to close sockets...
Sun May 20 18:26:06.036 [initandlisten] shutdown: waiting for fs preallocator...
Sun May 20 18:26:06.036 [initandlisten] shutdown: lock for final commit...
Sun May 20 18:26:06.036 [initandlisten] shutdown: final commit...
Sun May 20 18:26:06.036 [initandlisten] shutdown: closing all files...
Sun May 20 18:26:06.037 [initandlisten] closeAllFiles() finished
Sun May 20 18:26:06.037 [initandlisten] journalCleanup...
Sun May 20 18:26:06.037 [initandlisten] removeJournalFiles
Sun May 20 18:26:06.050 [initandlisten] shutdown: removing fs lock...
Sun May 20 18:26:06.050 dbexit: really exiting now
应该是之前没有正常被关闭,导致文件本锁住了。
解决办法:
1. 先把数据文件备份, --dbpath 的路径整个备份一下, 不然接下来的操作误操作了数据就丢失了
2. 运行修复命令:
mongod --dbpath /data/db --repair
替换上面的db为您自己的本地路径 收起阅读 »
mongo服务启动失败: ERROR: mmap private failed with out of memory
平时在树莓派上开机自动执行以下命令,启动mongo服务
突然今天发现mongo的服务连不上,看log发现mongo在启动后马上关闭了,提示的错误是在加载一个大的数据文件的时候提示内存不足(坑爹的,树莓派自身内存才1GB,无法扩容)。
错误日志:
看了下mongod的用法,尝试把参数 --journal,去掉,重新运行,然后就可以了。
sudo mongod --fork --dbpath /home/pi/mongo/db/ --smallfiles --journal --logpath /home/pi/mongo/log.txt
突然今天发现mongo的服务连不上,看log发现mongo在启动后马上关闭了,提示的错误是在加载一个大的数据文件的时候提示内存不足(坑爹的,树莓派自身内存才1GB,无法扩容)。
错误日志:
Sun May 13 12:08:11.185 [initandlisten] MongoDB starting : pid=1929 port=27017 dbpath=/home/pi/mongo/db/ 32-bit host=raspberrypi
Sun May 13 12:08:11.186 [initandlisten]
Sun May 13 12:08:11.186 [initandlisten] ** NOTE: This is a 32 bit MongoDB binary.
Sun May 13 12:08:11.186 [initandlisten] ** 32 bit builds are limited to less than 2GB of data (or less with --journal).
Sun May 13 12:08:11.186 [initandlisten] ** See http://dochub.mongodb.org/core/32bit
Sun May 13 12:08:11.187 [initandlisten]
Sun May 13 12:08:11.187 [initandlisten] db version v2.4.10
Sun May 13 12:08:11.187 [initandlisten] git version: nogitversion
Sun May 13 12:08:11.187 [initandlisten] build info: Linux bm-wb-04 3.19.0-trunk-armmp #1 SMP Debian 3.19.1-1~exp1+plugwash1 (2015-03-28) armv7l BOOST_LIB_VERSION=1_55
Sun May 13 12:08:11.187 [initandlisten] allocator: system
Sun May 13 12:08:11.187 [initandlisten] options: { dbpath: "/home/pi/mongo/db/", fork: true, journal: true, logpath: "/home/pi/mongo/mongod.log" }
Sun May 13 12:08:11.198 [initandlisten] journal dir=/home/pi/mongo/db/journal
Sun May 13 12:08:11.198 [initandlisten] recover : no journal files present, no recovery needed
Sun May 13 12:08:11.238 [initandlisten] ERROR: mmap private failed with out of memory. You are using a 32-bit build and probably need to upgrade to 64
Sun May 13 12:08:11.239 [initandlisten] Assertion: 13636:file /home/pi/mongo/db/xueqiu.5 open/create failed in createPrivateMap (look in log for more information)
0x662fa8 0x63527c 0x6196c0 0x6197bc 0x409d5c 0x4414fc 0x2ea634 0x2eaa3c 0x2eb55c 0x2ebd98 0x26f998 0x26fb94 0x175a20 0x177bf4 0x152bf0 0x76556294
mongod(_ZN5mongo15printStackTraceERSo+0x1c) [0x662fa8]
mongod(_ZN5mongo10logContextEPKc+0x110) [0x63527c]
mongod(_ZN5mongo11msgassertedEiPKc+0xc0) [0x6196c0]
mongod(_ZN5mongo18msgassertedNoTraceEiPKc+0) [0x6197bc]
mongod(_ZN5mongo8MongoMMF13finishOpeningEv+0x308) [0x409d5c]
mongod(_ZN5mongo13MongoDataFile12openExistingEPKc+0x9c) [0x4414fc]
mongod(_ZN5mongo8Database16openExistingFileEi+0x23c) [0x2ea634]
mongod(_ZN5mongo8Database12openAllFilesEv+0x24) [0x2eaa3c]
mongod(_ZN5mongo8DatabaseC2EPKcRbRKSs+0x158) [0x2eb55c]
mongod(_ZN5mongo14DatabaseHolder11getOrCreateERKSsS2_Rb+0x500) [0x2ebd98]
mongod(_ZN5mongo6Client7Context11_finishInitEv+0x34) [0x26f998]
mongod(_ZN5mongo6Client7ContextC1ERKSsS3_b+0x78) [0x26fb94]
mongod(_ZN5mongo14_initAndListenEi+0xb00) [0x175a20]
mongod(_ZN5mongo13initAndListenEi+0x14) [0x177bf4]
mongod(main+0x2b8) [0x152bf0]
/lib/arm-linux-gnueabihf/libc.so.6(__libc_start_main+0x114) [0x76556294]
Sun May 13 12:08:11.250 [initandlisten] warning database /home/pi/mongo/db/ xueqiu could not be opened
Sun May 13 12:08:11.251 [initandlisten] DBException 13636: file /home/pi/mongo/db/xueqiu.5 open/create failed in createPrivateMap (look in log for more information)
Sun May 13 12:08:11.251 [initandlisten] exception in initAndListen: 13636 file /home/pi/mongo/db/xueqiu.5 open/create failed in createPrivateMap (look in log for more information), terminating
Sun May 13 12:08:11.251 dbexit:
Sun May 13 12:08:11.252 [initandlisten] shutdown: going to close listening sockets...
Sun May 13 12:08:11.252 [initandlisten] shutdown: going to flush diaglog...
Sun May 13 12:08:11.252 [initandlisten] shutdown: going to close sockets...
Sun May 13 12:08:11.252 [initandlisten] shutdown: waiting for fs preallocator...
Sun May 13 12:08:11.252 [initandlisten] shutdown: lock for final commit...
Sun May 13 12:08:11.252 [initandlisten] shutdown: final commit...
Sun May 13 12:08:11.252 [initandlisten] shutdown: closing all files...
Sun May 13 12:08:11.252 [initandlisten] closeAllFiles() finished
Sun May 13 12:08:11.252 [initandlisten] journalCleanup...
Sun May 13 12:08:11.253 [initandlisten] removeJournalFiles
Sun May 13 12:08:11.263 [initandlisten] shutdown: removing fs lock...
Sun May 13 12:08:11.264 dbexit: really exiting now
看了下mongod的用法,尝试把参数 --journal,去掉,重新运行,然后就可以了。
sudo mongod --fork --dbpath /home/pi/mongo/db/ --smallfiles --logpath /home/pi/mongo/log.txt收起阅读 »
pymongo连接树莓派的mongo server出现错误
客户端在ubuntu,安装的是pymongo, 服务端在树莓派,运行的是mongod的服务。
出现以下的错误:
/usr/local/lib/python2.7/dist-packages/pymongo/topology_description.pyc in check_compatible(self)
119 """
120 if self._incompatible_err:
--> 121 raise ConfigurationError(self._incompatible_err)
122
123 def has_server(self, address):
ConfigurationError: Server at raspberrypi:27017 reports wire version 0, but this version of PyMongo requires at least 2 (MongoDB 2.6).
##################### 问题排除 #####################
因为使用ubuntu连接本机的mongd server,没有出现这个问题。 所以问题应该处在版本上。
然后把pymongo的版本降下去,原来是3.6的版本,然后降到3.2. 重试后问题就解决了。
sudo pip install pymongo==3.2
收起阅读 »
出现以下的错误:
/usr/local/lib/python2.7/dist-packages/pymongo/topology_description.pyc in check_compatible(self)
119 """
120 if self._incompatible_err:
--> 121 raise ConfigurationError(self._incompatible_err)
122
123 def has_server(self, address):
ConfigurationError: Server at raspberrypi:27017 reports wire version 0, but this version of PyMongo requires at least 2 (MongoDB 2.6).
##################### 问题排除 #####################
因为使用ubuntu连接本机的mongd server,没有出现这个问题。 所以问题应该处在版本上。
然后把pymongo的版本降下去,原来是3.6的版本,然后降到3.2. 重试后问题就解决了。
sudo pip install pymongo==3.2
收起阅读 »