我编写了一个Python脚本,如果它不存在则初始化一个空数据库.
import os
if not os.path.exists('Database'):
os.makedirs('Database')
os.system('sqlite3 Database/testDB.db ";"')
# rest of the script...
Run Code Online (Sandbox Code Playgroud)
我可以用更多的Pythonic方式,尝试 - 除外,还是这种代码可以接受?
zen*_*poy 31
我想你可以这样做:
import sqlite3
conn = sqlite3.connect('Database/testDB.db')
Run Code Online (Sandbox Code Playgroud)
这应该连接到您的数据库并在它不存在的情况下创建它.我不确定这是最pythonic方式,但它确实使用sqlite3模块而不是sqlite3命令.
制作Pythonic:创建一个sqlite3数据库,如果它不存在?
最Pythonic的方法是使用上下文管理器:
import sqlite3
# if we error, we rollback automatically, else commit!
with sqlite3.connect('/Temp/testDB.db') as conn:
cursor = conn.cursor()
cursor.execute('SELECT SQLITE_VERSION()')
data = cursor.fetchone()
print('SQLite version:', data)
Run Code Online (Sandbox Code Playgroud)
在python shell中,这对我来说是响应:
<sqlite3.Cursor object at 0x0CCAD4D0>
SQLite version: (u'3.5.9',)
Run Code Online (Sandbox Code Playgroud)
要确保您具有跨平台工作的临时文件路径,请使用tempfile.gettempdir:
import tempfile
with sqlite3.connect(tempfile.gettempdir() + '/testDB.db') as conn:
...
Run Code Online (Sandbox Code Playgroud)
这是在必要时创建目录路径、数据库文件和表的方法。如果这些已经存在,脚本将不会覆盖任何内容,只使用手头的内容。
import os
import sqlite3
data_path = './really/deep/data/path/'
filename = 'whatever'
os.makedirs(data_path, exist_ok=True)
db = sqlite3.connect(data_path + filename + '.sqlite3')
db.execute('CREATE TABLE IF NOT EXISTS TableName (id INTEGER PRIMARY KEY, quantity INTEGER)')
db.close()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14267 次 |
| 最近记录: |