如何一次装载,多次调用?

2016-12-29 14:14:20 +08:00
 omg21
我现在做的一个模块是在字符串中匹配城市名,比如:
print(printCityName('上海市 2016 事业单位招聘计划'))
结果显示:'上海市'

在这个模块里首先从数据库中取出全部城市名,取出来后存到一个列表里),执行 printCityName()时在列表里挨个试,直到取出符合条件的内容为止,取不出来输出''。

我这样做是想让主程序内容更少些,但是这样做的结果就是每次都要读取数据库,内容少还行,如果有几百万条几千万条数据,那就太累了。
应该怎么做能一次性把数据库装载到内存里,然后多次调用呢?
1983 次点击
所在节点    Python
7 条回复
liuqhang
2016-12-29 14:31:30 +08:00
redis
jiuanjing
2016-12-29 19:03:59 +08:00
几百万条数据全部装内存里,这个想法很危险
omg21
2016-12-29 21:28:49 +08:00
@jiuanjing 不是啊,我只是要把全国的城市名和县区名装到内存里
jiuanjing
2016-12-29 22:56:38 +08:00
@omg21 一个 arraylist 不就行了
omg21
2016-12-30 14:08:44 +08:00
@jiuanjing
@liuqhang
搞定了,用了一个类,以前不习惯用类,现在才知道类的好处。把数据加载和查询分开成两个函数,放在一个类里,在主程序里各自调用就行了。
qile1
2016-12-31 19:12:35 +08:00
@omg21
给个代码参考一下如何?学习一下,我也有个列表和数据库里面的列表比对归类!一直没有好办法。
omg21
2016-12-31 21:04:13 +08:00
@qile1 你要比对的话只能遍历一遍了,

citylist = ['北京','上海','南京','杭州'......]
textstr = '上海 2016 年事业单位招聘计划'

for city in citylist:
++if city in textstr:
++++print(city)
++++break

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/330999

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX