回答

收藏

Python和sqlite3-导入和导出数据库

技术问答 技术问答 373 人阅读 | 0 人回复 | 2023-09-14

我正在尝试编写脚本来导入数据库文件。我编写了脚本来导出文件,如下所示:
' m4 g& a: X9 `1 ~5 c. y* Limport sqlite3- m9 d( C8 N5 {: Z) C: G4 y8 J
con = sqlite3.connect('../sqlite.db')2 w0 m6 O+ a4 m
with open('../dump.sql', 'w') as f:
2 b  Y5 u# ~/ J6 F1 e2 i, G& X    for line in con.iterdump():
2 u" [& x- x. {, z/ G4 O        f.write('%s\n' % line)
) ]: t% ?' D! ^/ @! v1 U3 D0 M- j现在,我希望能够导入该数据库。我试过了 :
5 ]: w6 V, P1 `6 s# kimport sqlite3, P2 }! v% @' o& u' P/ a, b7 x
con = sqlite3.connect('../sqlite.db')
( `8 v: F3 B% p+ `& O. C/ gf = open('../dump.sql','r')
+ ~) o8 P( E  ~str = f.read()
! x  d+ H" ]* L: w, j4 Kcon.execute(str)% [% X& L  Z. V% u
但是我不允许执行多个语句。有没有办法让它直接运行SQL脚本?
3 S5 u: O% q- \! t+ f               
: O2 [: N" N  Y  S, O  d解决方案:+ K1 l- j7 c- y- E
               
2 X, W4 O# D/ Z& S3 {8 L( b% i$ L2 g9 f/ U5 P- D' O1 j+ p2 q
' m4 ]; e  L: o( i! e9 @
                sql = f.read() # watch out for built-in `str`+ l2 y2 j5 ^8 _, t8 k) k
cur.executescript(sql), q/ w( q6 B& r* \' A$ [6 T
文件资料。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则