我目前正在研究将.db文件(包括数据)导入Postgresql数据库的脚本。没有使用第三方工具和使用python的方法,有什么办法?
答案 0 :(得分:0)
您可以肯定使用Django。
from django.contrib.contenttypes.models import ContentType
ContentType.objects.all().delete()
否则,如果您想修改自己的方式。 您需要安装psycopg2
$ pip install psycopg2
然后您连接到Postgres。
import psycopg2
conn = psycopg2.connect("host=localhost dbname=postgres user=postgres")
这是您插入值的方式。
cur = conn.cursor()
insert_query = "INSERT INTO users VALUES {}".format("(10, 'hello@dataquest.io', 'Some Name', '123 Fake St.')")
cur.execute(insert_query)
conn.commit()
现在,使用SQLAlchemy,您可以轻松打开SQLite文件。
import sqlite3
conn = sqlite3.connect('database.db')
获取数据。
r = conn.execute("""SELECT * FROM books""")
r.fetchall()
这里是如何从SQLite获取所有表
数据库中的所有表名:
SELECT name FROM sqlite_master WHERE type = 'table'
sqlite_master可以看作是包含有关数据库(元数据)信息的表。
一种快速但最有可能效率低下的方法(因为它将运行700个查询以及700个单独的结果集),以获取表名列表,遍历这些表并返回columnA =“-”的数据:
for row in connection.execute('SELECT name FROM sqlite_master WHERE type = "table" ORDER BY name').fetchall()
for result in connection.execute('SELECT * FROM ' + row[1] + ' WHERE "columnA" = "-"').fetchall()
# do something with results
这是另一种方法
import sqlite3
try:
conn = sqlite3.connect('/home/rolf/my.db')
except sqlite3.Error as e:
print('Db Not found', str(e))
db_list = []
mycursor = conn.cursor()
for db_name in mycursor.execute("SELECT name FROM sqlite_master WHERE type = 'table'"):
db_list.append(db_name)
for x in db_list:
print "Searching",x[0]
try:
mycursor.execute('SELECT * FROM '+x[0]+' WHERE columnA" = "-"')
stats = mycursor.fetchall()
for stat in stats:
print stat, "found in ", x
except sqlite3.Error as e:
continue
conn.close()