我的字符串出了什么问题?
本帖最后由 luofeiyu_cu 于 2014-05-30 16:21 编辑selectcapital.代码 as code,quote.close as close, quote.close*capital.股份总数/10000 as market_cap,
balance.负债合计/balance.资产总计 as debt_ratio,
profit.归属于母公司所有者的净利润/balance.'所有者权益(或股东权益)合计' as roe,
profit.归属于母公司所有者的净利润/balance.'负债和所有者权益(或股东权益)总计' as roa ,
quote.close*capital.股份总数/profit.归属于母公司所有者的净利润 as pe,
quote.close*capital.股份总数/balance.资产总计as pb
from profile,capital,quote,balance,profit
where capital.代码=300001
and profile.代码=capital.代码
and profile.代码=quote.code
and profile.代码=balance.代码
and profile.代码=profit.代码
and quote.date="20140523"
and balance.报告日期="20131231"
and profit.报告日期="20131231";
这一串string,可以顺利地查询sqlite数据库,可是我写成下面的方式,就无法得出结果。
# -*- coding: utf-8 -*-
import os,re,sqlite3
db_name='china.sqlite'
target_dir='e:\\workspace\\data\\'
con = sqlite3.connect(target_dir+db_name)
cur=con.cursor()
select_str='''selectcapital.代码 as code,quote.close as close, quote.close*capital.股份总数/10000 as market_cap,
balance.负债合计/balance.资产总计 as debt_ratio,
profit.归属于母公司所有者的净利润/balance.'所有者权益(或股东权益)合计' as roe,
profit.归属于母公司所有者的净利润/balance.'负债和所有者权益(或股东权益)总计' as roa ,
quote.close*capital.股份总数/profit.归属于母公司所有者的净利润 as pe,
quote.close*capital.股份总数/balance.资产总计as pb
from profile,capital,quote,balance,profit
wherecapital.代码=300001
and profile.代码=capital.代码
and profile.代码=quote.code
and profile.代码=balance.代码
and profile.代码=profit.代码
and quote.date='20140523'
and balance.报告日期='20131231'
and profit.报告日期='20131231';'''
cur.execute(select_str)
print(cur.fetchall())
请问,这是什么原因? 非常不建议在数据中使用中文字段名,不管它是真正的字段名还是alias.
试着在连接数据库的时候指定编码为 utf8 看看. 我不确定可以. 我把自己的china.sqlite数据库的共享地址也列出来,请下载后测试看看。
http://pan.baidu.com/s/1pJyQamR select_str='''selectcapital.代码 as code,quote.close as close, quote.close*capital.股份总数/10000 as market_cap,
balance.负债合计/balance.资产总计 as debt_ratio,
profit.归属于母公司所有者的净利润/balance.'所有者权益(或股东权益)合计' as roe,
profit.归属于母公司所有者的净利润/balance.'负债和所有者权益(或股东权益)总计' as roa ,
quote.close*capital.股份总数/profit.归属于母公司所有者的净利润 as pe,
quote.close*capital.股份总数/balance.资产总计as pb
from profile,capital,quote,balance,profit
wherecapital.代码='300001'
and profile.代码=capital.代码
and profile.代码=quote.code
and profile.代码=balance.代码
and profile.代码=profit.代码
and quote.date='20140523'
and balance.报告日期='20131231'
and profit.报告日期='20131231';'''
修改成
select_str='''selectcapital.代码 as code,quote.close as close, quote.close*capital.股份总数/10000 as market_cap,
balance.负债合计/balance.资产总计 as debt_ratio,
profit.归属于母公司所有者的净利润/balance.'所有者权益(或股东权益)合计' as roe,
profit.归属于母公司所有者的净利润/balance.'负债和所有者权益(或股东权益)总计' as roa ,
quote.close*capital.股份总数/profit.归属于母公司所有者的净利润 as pe,
quote.close*capital.股份总数/balance.资产总计as pb
from profile,capital,quote,balance,profit
where profile.代码=capital.代码
and profile.代码=quote.code
and profile.代码=balance.代码
and profile.代码=profit.代码
and quote.date='20140523'
and balance.报告日期='20131231'
and profit.报告日期='20131231';'''
都可以运行,为何增加了一个 capital.代码='300001' 就不能正常运行呢? import os,re,sqlite3
db_name='china.sqlite'
target_dir='e:\\workspace\\data\\'
con = sqlite3.connect(target_dir+db_name)
cur=con.cursor()
select_str='''selectcapital.代码 as code,quote.close as close, quote.close*capital.股份总数/10000 as market_cap,
balance.负债合计/balance.资产总计 as debt_ratio,
profit.归属于母公司所有者的净利润/balance.'所有者权益(或股东权益)合计' as roe,
profit.归属于母公司所有者的净利润/balance.'负债和所有者权益(或股东权益)总计' as roa ,
quote.close*capital.股份总数/profit.归属于母公司所有者的净利润 as pe,
quote.close*capital.股份总数/balance.资产总计as pb
from profile,capital,quote,balance,profit
wherecapital.代码='300001'
and profile.代码='300001'
and quote.code='300001'
and balance.代码='300001'
and profit.代码='300001'
and quote.date='20140523'
and balance.报告日期='20131231'
and profit.报告日期='20131231';'''
cur.execute(select_str)
print(cur.fetchall())
上面可以运行,为何这样就不行?
import os,re,sqlite3
db_name='china.sqlite'
target_dir='e:\\workspace\\data\\'
con = sqlite3.connect(target_dir+db_name)
cur=con.cursor()
select_str='''selectcapital.代码 as code,quote.close as close, quote.close*capital.股份总数/10000 as market_cap,
balance.负债合计/balance.资产总计 as debt_ratio,
profit.归属于母公司所有者的净利润/balance.'所有者权益(或股东权益)合计' as roe,
profit.归属于母公司所有者的净利润/balance.'负债和所有者权益(或股东权益)总计' as roa ,
quote.close*capital.股份总数/profit.归属于母公司所有者的净利润 as pe,
quote.close*capital.股份总数/balance.资产总计as pb
from profile,capital,quote,balance,profit
wherecapital.代码=300001
and profile.代码=capital.代码
and profile.代码=quote.code
and profile.代码=balance.代码
and profile.代码=profit.代码
and quote.date='20140523'
and balance.报告日期='20131231'
and profit.报告日期='20131231';'''
cur.execute(select_str)
print(cur.fetchall())
多半是字符集的问题吧,你的库肯定是GBK的,但是的你代码是UTF8的。。。。。。。。
页:
[1]