当前位置: 首页 > 面试题库 >

具有脚本语言的动态数据库

陆沈浪
2023-03-14
问题内容

我有一组要处理的.csv文件。使用SQL查询来处理它会容易得多。我想知道是否有某种方式可以加载.csv文件,并使用SQL语言通过python或ruby之类的脚本语言对其进行查询。用类似于ActiveRecord的东西加载它会很棒。

问题是我不想在运行脚本之前在某个地方运行数据库。在脚本语言和某些模块之外,我不需要其他安装。

我的问题是该任务应使用哪种语言以及使用哪些模块。我环顾四周,找不到适合我的任何东西。可能吗?


问题答案:

sqlite3,包含在python中。使用它,您可以创建一个数据库(
在内存上 )并向其中添加行,并执行SQL查询。

如果您想要类似ActiveRecord的功能,则应该添加一个外部ORM,例如sqlalchemy。那是一个单独的下载

使用sqlalchemy的快速示例:

from sqlalchemy import create_engine, Column, String, Integer, MetaData, Table
from sqlalchemy.orm import mapper, create_session
import csv
CSV_FILE = 'foo.csv'
engine = create_engine('sqlite://') # memory-only database

table = None
metadata = MetaData(bind=engine)
with open(CSV_FILE) as f:
    # assume first line is header
    cf = csv.DictReader(f, delimiter=',')
    for row in cf:
        if table is None:
            # create the table
            table = Table('foo', metadata, 
                Column('id', Integer, primary_key=True),
                *(Column(rowname, String()) for rowname in row.keys()))
            table.create()
        # insert data into the table
        table.insert().values(**row).execute()

class CsvTable(object): pass
mapper(CsvTable, table)
session = create_session(bind=engine, autocommit=False, autoflush=True)

现在,您可以查询数据库,按任何字段进行过滤等。

假设您在此csv上运行以上代码:

name,age,nickname
nosklo,32,nosklo
Afila Tun,32,afilatun
Foo Bar,33,baz

这将创建并与领域内存填充一个表nameagenickname。然后,您可以查询表:

for r in session.query(CsvTable).filter(CsvTable.age == '32'):
    print r.name, r.age, r.nickname

这将自动创建并运行SELECT查询并返回正确的行。

使用sqlalchemy的另一个优点是,如果您决定将来使用另一个功能更强大的数据库,则可以在不更改代码的情况下实际使用。



 类似资料:
  • Qore 是一个模块化、支持多线程的、集成SQL、弱类型的面向过程和对象的脚本语言,语法简单易懂。 Qore supports safe signal handling, exception handling and exception-safe programming, XML and JSON integration as well as TLS/SSL socket support, HTT

  • 在动态类型语言去掉类型二字,就成了动态语言,比方说不少地方都说python是动态语言,其实只是它的动态性比较多一些而已,很多所谓的静态语言也有动态性,只是没有那么明显,因此动态语言是一个很含糊的词,一般而言就是随主流的认识,比如python,ruby是动态语言,C,java是静态语言等 动态性不适合修饰语言,适合修饰一些语法特性,简单的说,静态就是编译期可以决定的一些事情,而动态就是运行期才能决定

  • 脚本语言是介于 HTML 和 Java、C++ 和 Visual Basic 之类的编程语言之间的语言。HTML 通常用于格式化文本和链接网页。编程语言通常用于向计算机发送一系列复杂指令。脚本语言也可用来向计算机发送指令,但它们的语法和规则没有可编译的编程语言那样严格和复杂。脚本语言主要用于格式化文本和使用以编程语言编写的已编译好的组件。 Active Server Pages 使 Web 开发商

  • Active Server Pages 提供了一个在 HTML 页中使用现有脚本语言如 Microsoft VBScript 和 Microsoft JScript 的框架。本节将解释如何创建 ASP 页、如何添加脚本语言语句以及如何执行创建对象实例等基本任务。虽然这些主题介绍了一些脚本和编程的概念,但其用意并非是教您一门脚本语言。Microsoft 的脚本语言提供自己的文档,许多其他的有关脚本的

  • 最近考虑通过写脚本实现自动化处理,但是自己没有接触太多脚本语言,希望大佬们可以帮助选型 脚本的应用场景大部分是通过发送http请求实现每天签到、打卡这样的功能

  • 使用说明: 以 shell32.dll 为例,要替换 ID 为 1010 的图标资源,你只需要用 Resource Hacker 把它导出到 .\include\Resources\shell32.dll\1010.ico即可,安装程序会自动搜索并替换。 Resource Hacker 的文件名为 ResHacker.exe 放在 include 下面,最好使用英文版的 Resource Hack