python 数据库操作

  1 import MySQLdb as my
  2 import pyodbc as ms
  3 import os
  4 
  5 # create sql sentence from a column's definitions
  6 def createSql(line):
  7     result = ''
  8     column_def_list = line.split(',')
  9     result = column_def_list[0]     # column name
 10 
 11     # column type
 12     if column_def_list[2] == 'utf8_general_ci':
 13         result = result + ' n' + column_def_list[1]
 14     else:
 15         if column_def_list[1].lower().find('int') > -1:
 16             result = result + ' int'
 17         else:
 18             result = result + ' ' + column_def_list[1]
 19 
 20     # column can be null or not
 21     if column_def_list[3].find('NO') > -1:
 22         result = result + ' NOT NULL'
 23     else:
 24         result = result + ' NULL'
 25 
 26     # is primary key
 27     if column_def_list[4].find('PRI') > -1:
 28         result = result + ' PRIMARY KEY'
 29         # is auto increment
 30         if column_def_list[6].find('auto_increment') > -1:
 31             result = result + ' IDENTITY(1,1)'
 32             
 33     result = result + ', '
 34 
 35     return result
 36 
 37 # transfer db and data in the db
 38 try:
 39     config_file_path = '''config/db.txt'''
 40     config_tables_path = '''config/tables.txt'''
 41     isExists = os.path.isfile(config_file_path) # check if file's there
 42 
 43     if not isExists:
 44         # if config file does not exist, throw an exception.
 45         raise Exception,'You need to config databases where data from and to.'
 46 
 47     # read the config file
 48     config_file = open(config_file_path,'r')    #from
 49     config_info = config_file.readlines()
 50     from_list = config_info[0].split(':')
 51     from_db_info = from_list[1].split(',')
 52     
 53     to_list = config_info[1]                    #to
 54     to_db_info = to_list.split(':')[1]
 55     #to_db_info = to_db_info[0:len(to_db_info)-1]
 56     
 57     # check if there's enough info
 58     if len(from_db_info)< 4:
 59         raise Exception, 'No enough parameters in db which data will from'
 60     
 61     from_server = from_db_info[0].split('=')[1] # server
 62     from_user = from_db_info[1].split('=')[1]   # user
 63     from_pwd = from_db_info[2].split('=')[1]    # pwd
 64     from_db = from_db_info[3].split('=')[1]     # pwd
 65     from_db = from_db[0:len(from_db)-1]
 66     
 67     # connect to db which data is from
 68     db = my.connect(from_server,from_user,from_pwd,from_db)
 69 
 70     cursor = db.cursor()
 71     cursor.execute("show tables")
 72     results=cursor.fetchall()
 73 
 74     tables_file = open(config_tables_path,'w')
 75 
 76     #write the table definitions into a txt file
 77     for row in results:
 78         tb_name = row[0]
 79         tables_file.write('table name: ' + tb_name + '\r\n')
 80         cursor.execute("SHOW FULL COLUMNS FROM " + tb_name)
 81         defs = cursor.fetchall()
 82         for el in defs:
 83             col_def = ''
 84             count_col = 0
 85             for col in el:
 86                 temp_el = str(col)
 87                 if count_col == 8:
 88                     col_def = col_def + temp_el
 89                     
 90                 col_def = col_def + temp_el + ','
 91                 count_col = count_col + 1
 92 
 93             # write the table info into a txt file
 94             tables_file.write(col_def + '\r\n')
 95             
 96     tables_file.close()
 97     
 98     tables_file = open(config_tables_path,'r')
 99     print to_db_info
100     #connect to ms sqlserver
101     ms_conn = ms.connect(to_db_info)
102     ms_cursor = ms_conn.cursor()
103     index = 0
104     create_sql = ''
105     current_tb_name = ''
106     for line in tables_file.xreadlines():
107         if line.find('table') > -1:
108             current_tb_name = line.split(':')[1]
109             if(len(create_sql) > 0):
110                 create_sql = create_sql + ')'
111                 print create_sql #test
112                 ms_cursor.execute(create_sql)
113                 create_sql = ''
114             
115             create_sql = 'create table ' +  current_tb_name + '('
116 
117         else:
118             create_sql = create_sql + createSql(line)
119 
120     # execute last create sentence
121     if len(create_sql) > 0:
122         ms_cursor.execute(create_sql)
123 
124     print '==================DONE================'
125     
126 except Exception, diag:
127     print diag
128     '''exception handling'''
129 finally:
130     if(db != None):
131         db.close()
132     if(ms_conn != None):
133         ms_conn.close()
134     if(config_file != None):
135         config_file.close()
136     if(tables_file != None):
137         tables_file.close()
138 
139     
140 #def dimension():
141 #    test=[[1,1],[2,2],[3,3]]
142 #    return len(test)
143 
144 #print dimension()
145 

欢迎加群互相学习,共同进步。QQ群:iOS: 58099570 | Android: 330987132 | Go:217696290 | Python:336880185 | 做人要厚道,转载请注明出处!http://www.cnblogs.com/sunshine-anycall/archive/2010/05/23/1742355.html

时间: 2025-01-30 04:58:42

python 数据库操作的相关文章

Python数据库操作手册

数据|数据库 数据库的操作在现在的Python里面已经变得十分的好用,有了一套API标准.下面的就是讲讲如何的去使用这套框架定义.此框架包含以下部分模块接口 连接对象 游标对象 DBI辅助对象 数据类型与定义 如何实现的提示 从1.0到2.0的变化 例子 模块接口connect(parameters...) 其中的参数格式如下: dsn 数据源名称user 用户名(可选)password 密码(可选)host 主机名(可选)database 数据库名(可选)举个例子: connect(dsn='

python数据库操作常用功能使用详解(创建表/插入数据/获取数据)_python

实例1.取得MYSQL版本 复制代码 代码如下: # -*- coding: UTF-8 -*-#安装MYSQL DB for pythonimport MySQLdb as mdbcon = Nonetry:    #连接mysql的方法:connect('ip','user','password','dbname')    con = mdb.connect('localhost', 'root',        'root', 'test');    #所有的查询,都在连接con的一个模块

Python读写Redis数据库操作示例_python

使用Python如何操作Redis呢?下面用实例来说明用Python读写Redis数据库.比如,我们插入一条数据,如下: 复制代码 代码如下: import redis class Database:      def __init__(self):          self.host = 'localhost'          self.port = 6379      def write(self,website,city,year,month,day,deal_number):    

pymssql数据库操作MSSQL2005实例分析

  本文实例讲述了pymssql数据库操作MSSQL2005的方法.分享给大家供大家参考.具体如下: 使用的MSSQL2005,通过pymssql来连接的.把可能用到的数据库操作方式都总结如下,如果要用的时候就备查啦. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49

[学习收藏]SQLite数据库操作学习

用Python进行SQLite数据库操作 原文参见:http://www.cnblogs.com/yuxc/archive/2011/08/18/2143606.html 简单的介绍       SQLite数据库是一款非常小巧的嵌入式开源数据库软件,也就是说没有独立的维护进程,所有的维护都来自于程序本身.它是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了.它能够支持Window

MySQL实战系列2:你不可不知的数据库操作

作者介绍 索宁,擅长Python开发.MySQL.前端等众多技术领域,曾负责众多企业安全架构解决方案 ,涉猎行业有媒体.出版社.航空运输.医疗.军队.政府.教育等.         一.数据库操作        1.查看数据库   SHOW DATABASES;   # 默认数据库:   mysql - 用户权限相关数据   test - 用于用户测试数据   information_schema - MySQL本身架构相关数据   2.创建数据库   # utf-8 编码 CREATE DAT

SQLObject v1.1发布 Python数据库对象映射框架

SQLObject 1.1.0 发布,SQLObject 是一个流行的Python 数据库对象映射框架,映射的规则就是表->类.字段->属性. 过提供用于操作数据库表的类和对象,对象关系映射工具有助于提高生产率.Python 最好的对象关系映射工具是 SQLObject -- 一个开放源码项目,它几乎完成编程数据库所需的所有操作.本文介绍 SQLObject 及其功能.阅读本文后,您将能够不编写任何 SQL 代码而连接 Python 与数据库. 当面向对象编程范例满足大多数数据库的关系范例时,

Python数据库ORM工具sqlalchemy的学习笔记

SQLAlchemy是python的一个数据库ORM工具,提供了强大的对象模型间的转换,可以满足绝大多数数据库操作的需求,并且支持多种数据库引擎(sqlite,mysql,postgres, mongodb等),在这里记录基本用法和学习笔记. 一.安装 通过pip安装 $ pip install SQLAlchemy  二.使用 首先是连接到数据库,SQLALchemy支持多个数据库引擎,不同的数据库引擎连接字符串不一样,常用的有 mysql://username:password@hostna

详解Python 数据库 (sqlite3)应用_python

Python自带一个轻量级的关系型数据库SQLite.这一数据库使用SQL语言.SQLite作为后端数据库,可以搭配Python建网站,或者制作有数据存储需求的工具.SQLite还在其它领域有广泛的应用,比如HTML5和移动端.Python标准库中的sqlite3提供该数据库的接口. 我将创建一个简单的关系型数据库,为一个书店存储书的分类和价格.数据库中包含两个表:category用于记录分类,book用于记录某个书的信息.一本书归属于某一个分类,因此book有一个外键(foreign key)