py 数据库

简介:

# !/usr/bin/python
#
coding=UTF-8
#
sql 参考
#
http://www.kitebird.com/articles/pydbapi.html
import  cx_Oracle
import  re,os,sys

logTxt
= " ./log "

dataFile 
=   " ./data.txt "
fileCharset 
=   " GBK "
dbCharset 
=   " GBK "

username 
=   " .... "
userpwd 
=   " .... "
host 
= " .... "
dbname
= " .... "
# dbname="..."

MuById_SQL
= " select count(*) from mn00_tbl_music tm where tm.id=:mid "

CRById_SQL
= " select tc.music_id from mn05_tbl_copyright tc where tc.copyright_id=:crid "
CRById_In_Music_SQL
= " update  mn05_tbl_copyright  set music_id=:mid where copyright_id=:crid "

CRByMNameAndAName_SQL
= "  select tc.copyright_id from mn05_tbl_copyright tc where  (tc.actor_src_name=':acName' and tc.music_src_name=':muName' ) or (tc.actor_name=':acName' and tc.music_name=':muName')  " ;


#  60056601146|失意酒(童安格)|失意酒(童安格)|10030149
#
 CRID | 编辑后歌曲(歌手)|歌曲(歌手) |MID
def  action(strs):
    result 
=  selectSql( subSql(MuById_SQL,  " mid " , strs[ 3 ]) )
    
if ( int(result[0][0]) > 0):
        actionCR(strs[0],strs[
3 ])
    
if ( strs[ 1 and  strs[ 1 ] != ""  ):
        actionName(strs[
1 ],strs[ 3 ])
    
if ( strs[ 2 and  strs[ 2 ] != ""  ):
        actionName(strs[
2 ],strs[ 3 ])


def  actionName(mu_ac,mid):
    p 
=  re.compile( " (.*)\((.*)\) " )
    m 
=  p.match( mu_ac )
    
if (m):
        crmaSql
= subSql(CRByMNameAndAName_SQL, " muName " , m.group( 1 ))
        crmaSql
= subSql(crmaSql, " acName " ,m.group( 2 ))
        
for  row  in  selectSql( crmaSql ):
            actionCR(row[0].
__str__ () ,mid)
        
# count = cursor.rowcount
    
def  actionCR(crid,mid):
    result 
=  selectSql( subSql(CRById_SQL,  " crid " , crid )  ) 
    
if ( result[0][0] == None  or  int(result[0][0]) == 0):
        upCr
= subSql(CRById_In_Music_SQL, " crid " ,crid)
        upCr
= subSql(upCr, " mid " ,mid)
        
if (execSql(upCr) > 0):
            _log(
' match crid= ' + crid + '  muid= ' + mid)
def  subSql(strSql,subName,subValue):
    p 
=  re.compile( " : " + subName)
    
return  p.sub( subValue, strSql)
            
def  selectSql(sql):
    
print   ' select= ' + sql
    cursor.execute(sql.encode(dbCharset))
    
return  cursor.fetchall()

def  execSql(sql):
    
print   ' exec= ' + sql
    cursor.execute(sql.encode(dbCharset))
    connection.commit()
    
return  cursor.rowcount

def  _log(show):
    
print  show
    log 
=   ' echo  ' + show + '  >>  ' + logTxt
    os.system(log)
    
    
try :
    connStr
= username + " / " + userpwd + " @ " + dbname
    
print  connStr
    connection 
=  cx_Oracle.connect(connStr) 
    cursor 
=  connection.cursor()
    file 
=  open(dataFile)
    
if (len(sys.argv) == 2 ):
        startRow
= int(sys.argv[ 1 ])
    
else :
        startRow
= 1
    row 
=   1
    
for  str  in  file.readlines():
        
if (row >= startRow):
            str 
=  re.compile( " \n " ).sub(  "" , str )
            strs 
=  unicode(str, fileCharset).split( " | " )
            _log(
' start row= ' + row. __str__ () + '  crid= ' + strs[0] + '  muid= ' + strs[ 3 ])
            
try :
                action(strs)
            
except :
                _log(
' err row= ' + row. __str__ ())
            _log(
' end row= ' + row. __str__ () + '  crid= ' + strs[0] + '  muid= ' + strs[ 3 ])
        row
+= 1
finally :
    file.close()
    cursor.close()
    connection.close()   




本文转自博客园刘凯毅的博客,原文链接:py 数据库 ,如需转载请自行联系原博主。



目录
相关文章
|
消息中间件 数据库连接 数据库
py 多进程 引发的 各种数据库连接 消息队列连接 异常问题 简单分析
py 多进程 引发的 各种数据库连接 消息队列连接 异常问题 简单分析
68 0
|
数据库 数据安全/隐私保护 Python
Py经典案例:利用Python调用数据库历史记录文件,实现BTC、LTC等Encrypted currency找出最佳出仓价、收益比的加密币模拟交易系统
Py经典案例:利用Python调用数据库历史记录文件,实现BTC、LTC等Encrypted currency找出最佳出仓价、收益比的加密币模拟交易系统
Py经典案例:利用Python调用数据库历史记录文件,实现BTC、LTC等Encrypted currency找出最佳出仓价、收益比的加密币模拟交易系统
|
数据库 Python
Py之Data Base:Python和数据库的那些嘻嘻哈哈事详细攻略
Py之Data Base:Python和数据库的那些嘻嘻哈哈事详细攻略
Py之Data Base:Python和数据库的那些嘻嘻哈哈事详细攻略
|
3天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
45 15
|
3天前
|
关系型数据库 MySQL 数据库
数据库数据恢复—MYSQL数据库文件损坏的数据恢复案例
mysql数据库文件ibdata1、MYI、MYD损坏。 故障表现:1、数据库无法进行查询等操作;2、使用mysqlcheck和myisamchk无法修复数据库。
|
7天前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
15天前
|
关系型数据库 MySQL 数据库
GBase 数据库如何像MYSQL一样存放多行数据
GBase 数据库如何像MYSQL一样存放多行数据
|
27天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
34 1
|
29天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
39 4
|
1月前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
197 1

热门文章

最新文章