用于增强的SQL。

ezrecords的Python项目详细描述


Latest VersionBuildCoverageLicense

ezrecords是一个非常简单但功能强大的用于生成原始sql的库 查询大多数关系数据库。

ezrecords=kenneth reitz的records+justin文森特的ezsql+wordpress'wpdb-SQLAlchemy

只需编写sql。没有铃铛,没有口哨。这个常见的任务可以是 使用现有的标准工具非常困难。 这个库力求使这个工作流尽可能简单, 同时提供一个优雅的接口来处理查询结果。

数据库支持包括sqlite、postgres和mysql(不包括驱动程序)。

为什么?

  • records太棒了
  • ezsqlwpdb有非常好的api,因此它便于转换 从php到python
  • 我们对精心编写和执行SQL查询的热爱是毋庸置疑的, 但我认为一些基本DML和重复查询的助手会有帮助
  • “orm接受两个聪明的想法,并使它们都丧失能力。”, 一位非常聪明的人说。所以,只要我想远离 炼金术等。

用法

api

importloggingfromezrecords.mysqldbimportMySQLDblogger=logging.getLogger()# connectdb=MySQLDb(db_url="mysql://root:passwd@127.0.0.1:3306/test",logger=logger)# logger is optional# enable debugging - optionaldb.save_queries=True# save queries and execution timedb.show_sql=True# show SQL code being executed. logger above is required for logging to workdb.show_errors=True# show errorscreate_user_table="""
CREATE TABLE test_user (
    id INT AUTO_INCREMENT NOT NULL,
    username varchar(255) UNIQUE,
    password varchar(255),
    created_at TIMESTAMP,
    created_at_gmt TIMESTAMP,
    PRIMARY KEY(id)
)
"""db.query(create_table)# run generic SQLcreate_numbers_table="""
DROP TABLE IF EXISTS numbers;
CREATE TABLE numbers(
    ints int,
    floats float
);
"""db.query(create_table_sql)insert_numbers_sql="INSERT INTO numbers (ints, floats) VALUES (%d, %f)"# DB API only accepts %s, so we replace %d and %f by %s internallydb.query(insert_numbers_sql,3,3.14)# run generic queries with params# insert recordsdb.insert('test_user',username='scott',password='tiger',created_at=datetime.datetime.now())db.insert('test_user',{'username':'JONES','password':'STEEL'})# bulk_insert recordsdb.bulk_insert('test_user',('username','password'),[('scott','tiger'),('JONES','STEEL')])# Update recordsdb.update('test_user',{'password':'shepard'},{'username':'scott'})# Delete recordsdb.delete('test_user',{'username':None})# None is converted to NULL# Sanitize querydb.prepare("""INSERT INTO postmeta (post_id, meta_key, meta_value) VALUES ( '%d', "%s", %%s )')""",10,"Harriet's Adages","WordPress' database interface is like Sunday Morning: Easy.")# Call stored proceduresdb.call_procedure('adds',1,2)# Get single variable/valuedb.get_var('SELECT version()')# Get specific row from many resultsdb.get_row('SELECT * FROM test_user',row_offset=1)# if offset not given the first row is returned# Get specific column from many resultsdb.get_col('SELECT username, password FROM test_user',column_offset='password')# offset can be numeric too# Get results in specific formatdb.get_results('SELECT username, password FROM test_user','json')# Get last inserted ID from AUTO_INCREMENT/SERIAL fieldsdb.insert('test_user',username='scott',password='tiger',created_at=datetime.datetime.now())db.last_insert_id# Get number of affected rows from previus querydb.delete('test_user')db.affected_rows# Switch to another databasedb.use('information_schema')# Check query timing# execute long running querydb.last_query_elapsed_time# Transactions# ---db.begin_transaction()db.commit()# or db.rollback()# Data exportrows=db.query('SELECT * FROM table')rows.datasetrows.export('csv')# yaml, json, xls, xlsx# Goodiesdb.db_version()# get server versiondb.exists('table')# check if table existsdb.get_table_names()# get list of tables in databasedb.flush()# clear cache results

cli

ezrecords -h
ezrecords "SELECT version() AS version""json" --url="mysql://root:passwd@127.0.0.1:3306/test"
ezrecords "SELECT version() AS version""json" --url="postgres://postgres:passwd@127.0.0.1:5432/test"
ezrecords "SELECT sqlite_version() AS version""json" --url="sqlite:///:memory:"

谢谢

谢谢你检查这个图书馆!希望你觉得有用。

当然,总有改进的余地。随便吧 open an issue 所以我们可以使ezrecords更好、更快、更强。

下载并安装

在pypi上提供该模块之前,您可以安装该模块 直接从Github获取,带有:

pip install -egit+https://github.com/dareenzo/ezrecords@master#egg=ezrecords

ezrecords使用python 2.7和3.5运行。

文档生成

# edit documentation in _docs
cd _docs
make singlehtml
cd ..
cp -fR _docs/_build/singlehtml/* docs/

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
两个日期之间的datetime Java HashMap筛选器   java会选择以下选项吗:django+smartGWT似乎是一个不错的选择?   java如何在jsp中显示Json对象   从Java代码调用装入点文件路径   接口中的java JPA Hibernate更新查询   java在从jsp调用时从类获取根目录   java JFileChooser在JTextField中显示多个选定文件   在Springbean基类中定义的方法中使用@Retryable的java不会被重试   java StackOverflower错误和等于疯狂数字的值   swing使Java打印的页边距更小   java使用Matisse GUI builder设置最大宽度   带MySQL的java注册表单JavaFX在intellij中失败   java监听音量按钮事件安卓   java正在寻找一个新的应用程序。NET 3.5/J2EE体系结构概念比较文章/图表   java如何使用SpringJDBC检索记录   java MULE ESB:带有regex()函数的表达式过滤器   java JFrame按钮逻辑错误   java Android SQLite在Date1和Date2之间选择   java求解丢番图方程