热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SqlAlchemy:将表导出到新数据库-SqlAlchemy:exporttabletonewdatabase

Onlyrecentlystartedusingpython,andIlikeit!However,IamstuckwithSqlAlchemy.最近才开始使用pytho

Only recently started using python, and I like it! However, I am stuck with SqlAlchemy.

最近才开始使用python,我喜欢它!但是,我坚持使用SqlAlchemy。

I am trying to write a script that reads an MS SQL database, query a table (all fields, only a filter on some fields), and write the results to a local SQLite database.

我正在尝试编写一个脚本来读取MS SQL数据库,查询表(所有字段,只对某些字段进行过滤),并将结果写入本地SQLite数据库。

(The object is to write a data adapter: perform some queries on the SQLite database before exporting the results to another database. Writing to temporary table in the target database is also possible.)

(目标是编写数据适配器:在将结果导出到另一个数据库之前,在SQLite数据库上执行一些查询。也可以写入目标数据库中的临时表。)

I can make a connection and get query results - I can print them so I know that part works. But how can I create a new table based on the structure of the query results from the source SQL Server?

我可以建立连接并获得查询结果 - 我可以打印它们,所以我知道该部分有效。但是,如何根据源SQL Server的查询结果创建新表?

This works:

这有效:

import sqlalchemy

esd = sqlalchemy.create_engine( 'mssql+pyodbc://username:passwordSservername/dbname' )
for row in esd.execute( 'select * from ticket_actions where log_dt > \'2012-09-01\''):
    print( row.eFolderID )

This also works:

这也有效:

import pyodbc
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=servername;DATABASE=dbname;UID=username;PWD=password')
cursor = cnxn.cursor()
for row in cursor.execute( 'select * from ticket_actions where log_dt > \'2012-09-01\''):
    print( row.eFolderID )

Any ideas on how to create a new table with the same structure as the query has?

有关如何创建与查询结构相同的新表的任何想法?

Thanks!

谢谢!

2 个解决方案

#1


2  

See Creating and Dropping Database Tables:

请参阅创建和删除数据库表:

Creating … individual tables can be done via the create() … method of Table.

创建...单个表可以通过Table的create()...方法完成。

For reading the source structure, see Reflecting Database Objects:

有关读取源结构的信息,请参阅反映数据库对象:

A Table object can be instructed to load information about itself from the corresponding database schema object already existing within the database.
[…]
The reflection system can also reflect views.

可以指示Table对象从数据库中已存在的相应数据库模式对象加载有关其自身的信息。 [...]反射系统也可以反映视图。

#2


1  

Test this:

测试一下:

def copy_table(src_session, src_class, dst_session, dst_class):
    r=src_session.query(src_class).all()
    for i in r:
        j=dst_class()
        [setattr(j, col.name, getattr(i, col.name)) for col in i.__table__.columns]
        dst_session.add(j)

se1=db1.Session()
se2=db2.Session()
copy_table(se1, db1.Book, se2, db2.Book)
se2.commit()

推荐阅读
  • Oracle seg,V$TEMPSEG_USAGE与Oracle排序的关系及使用方法
    本文介绍了Oracle seg,V$TEMPSEG_USAGE与Oracle排序之间的关系,V$TEMPSEG_USAGE是V_$SORT_USAGE的同义词,通过查询dba_objects和dba_synonyms视图可以了解到它们的详细信息。同时,还探讨了V$TEMPSEG_USAGE的使用方法。 ... [详细]
  • 本文详细介绍了在ASP.NET中获取插入记录的ID的几种方法,包括使用SCOPE_IDENTITY()和IDENT_CURRENT()函数,以及通过ExecuteReader方法执行SQL语句获取ID的步骤。同时,还提供了使用这些方法的示例代码和注意事项。对于需要获取表中最后一个插入操作所产生的ID或马上使用刚插入的新记录ID的开发者来说,本文提供了一些有用的技巧和建议。 ... [详细]
  • Oracle10g备份导入的方法及注意事项
    本文介绍了使用Oracle10g进行备份导入的方法及相关注意事项,同时还介绍了2019年独角兽企业重金招聘Python工程师的标准。内容包括导出exp命令、删用户、创建数据库、授权等操作,以及导入imp命令的使用。详细介绍了导入时的参数设置,如full、ignore、buffer、commit、feedback等。转载来源于https://my.oschina.net/u/1767754/blog/377593。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 本文介绍了如何使用vue-awesome-swiper组件,包括在main.js中引入和使用swiper和swiperSlide组件,以及设置options和ref属性。同时还介绍了如何在模板中使用swiper和swiperSlide组件,并展示了如何通过循环渲染swipes数组中的数据,并使用picUrl属性显示图片。最后还介绍了如何添加分页器。 ... [详细]
  • 本文介绍了如何使用elementui分页组件进行分页功能的改写,只需一行代码即可调用。通过封装分页组件,避免在每个页面都写跳转请求的重复代码。详细的代码示例和使用方法在正文中给出。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • 语法:CREATE[索引类型]INDEX索引名称ON表名(列名)WITHFILLFACTOR填充因子值0~100GOUSE库名GOIFEXISTS(SELECT*FR ... [详细]
  • 下面的是我的login.jsp程序当选择复选框陌生人登录的时候,点击“登录”按钮,可以进入留言界面。当有正确的用户名跟密码登录的时候就进入留言界面。但是当我都没有选择的时候直接点击“登录”按钮也可 ... [详细]
  • 常用DOS命令,程序员的帮手
    2019独角兽企业重金招聘Python工程师标准cleanmgr–打开磁盘清理工具compmgmt.msc---计算机管理conf— ... [详细]
  • 《ACCESS实例教程(数据库的编程)》由会员分享,可在线阅读,更多相关《ACCESS实例教程(数据库的编程)(31页珍藏版)》请在人人文库网上搜索。1 ... [详细]
  • 1.连接相关名称类型说明ConnectDialog执行连接对话框控件ConnectedBoolean连接状态,通过函数Connect和Disconnect连接或关闭数据库连接,并触 ... [详细]
  • 《VMware、Citrix和Microsoft虚拟化技术详解与应用实践》一2.6 VMware vCenter Server的安装...
    2.6 VMwarevCenterServer的安装2.6.1 VMwarevCenterServer简介VMwarevCenterServer(以前称为VMware ... [详细]
  • 用PYTHON语言进行数据库编程,至少有六种方法可供采用.我在实际项目中采用,不但功能强大,而且方便快捷.以下是我在工作和学习中经验总结.方法一:使用DAO(DataAccessObjec ... [详细]
author-avatar
alloyer
这个家伙很懒,什么也没留下!
Tags | 热门标签
RankList | 热门文章
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有