数据库接口

我想用Python实现一个数据库桌面应用程序(PyGTK)。 到目前为止,我正在使用sqlite3,但我读到,它是不是很好,如果很less有人想同时访问它。 我正在考虑切换到另一个界面,但我不知道哪一个或者是否真的有必要。

我需要/有什么:

  • 2个表,每个约有2000个条目,这是主要数据集,但是会增加更多。
  • 数据库将存储在本地networking中。 应用程序将由5个人使用,在5个不同的PC上。
  • 该工具的使用并不常见,很less有人同时使用/编辑,但可能会发生。
  • 安全是一个重要的问题,但由于该工具在Intranet上运行,因此我不需要关心login/备份。 这是由服务器和IT的东西。
  • 数据库应该不会太慢,这里还有另外一点,每个条目都有大约3个图像(全部共15000个)。 我想如果用户select相应的入口将会慢,但我必须尝试一下。 或者,我生成所有图像并将文件path存储在数据库中。
  • 操作系统必须是Windows(XP / 7 / 64bit)

有什么build议么?

SQLite允许一个作家,但多个读者。

当然在这种情况下并不重要。 当多个用户尝试打开并写入到您网络上的SQLite数据库文件时,DB文件的最后一个写入者会赢,其他更改将会丢失。

你会想要使用一个数据库服务器,如:

  • PostgreSQL ( psycopg2 )
  • MySQL ( pymysql )
  • SQLserver ( pymssql )

括号中的链接是指向这些数据库的Python DB-API驱动程序信息的链接。

好消息是,如果你已经有了一个和sqlite3驱动程序一起工作的应用程序,那么你只需要通过适当的驱动程序来替换sqlite3可以了。 那么,您还需要更新您的应用程序,并提供一些有关连接到网络上的数据库服务器的附加信息。

例如,SQLite只需要一个到DB文件的路径,而上面的任何一个数据库都需要主机/ IP地址,端口,数据库名称,数据库用户名和数据库密码。

我个人喜欢PostgreSQL,但这最有可能取决于您的IT和服务器工作人员他们想要支持。 我想你可以通过SQLserver Express之类的东西(因为你的数据集看起来并不那么大),这可能更适合Windows环境。

如果你确信应用程序只能在Windows上运行,那么JET(后端Access使用)将是我的建议。

如果您没有在计算机上安装Access,则可以使用创建的空白数据库

 import ctypes ODBC_ADD_DSN = 1 Return = ctypes.windll.ODBCCP32.SQLConfigDataSource(0, ODBC_ADD_DSN, "Microsoft Access Driver (*.mdb)", "CREATE_DB=C:\Temp\database.mdb" + chr(0)) 

然后用pyodbc或adodbapi连接到数据库。